У меня есть две функции, мне нужно запустить оба из них параллельно, поэтому я создал поток для них в основной функции. код показан ниже:Шаги для выполнения потоков в win32
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
......
_beginthread(ModbusRead,0,(void*)12);
_beginthread(ModbusWrite,0,(void*)10);
}
Две функции - ModbusRead и ModbusWrite.
Я реализовал только эти две строки потока в моем коде, и они запускают эти две функции параллельно друг от друга, кроме основного потока основной функции.
скажем, функция ModbusRead находится в thread1, а ModbusWrite - в thread2. Я должен сделать следующее.
function ModbusWrite(thread2)
{
if (condition1 true)
{
Pause thread1(donot run function ModbusRead)
if(condition2 true)
{
resume thread1(restart function ModbusRead)
}
}
}
Поскольку я новичок в нить я брожу правильно ли моя реализацию нити или нет, и как я могу выполнить упомянутое выше условие.
Похоже, вы хотите взаимного исключения или событий или сигналов какого-то рода. Межпоточная коммуникация, как это, является довольно сложной проблемой и, вероятно, не является чем-то, что может быть адекватно объяснено в этом контексте, поскольку она требует тщательного проектирования, чтобы избежать взаимоблокировок и других проблем. Вы можете попробовать обратиться к документации MSDN по синхронизации: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686353(v=vs.85).aspx –
. Это тот же вопрос, что и [ваш другой] (http://stackoverflow.com/questions/20603507/what-is-the-correct-synchronization-method-for-the-thread-in-win32)? – chwarr
да что-то подобное .. просто пытаюсь по-другому, и я не могу вставить код, поэтому я создал еще один вопрос с более подробной информацией – user3048644