【发布时间】:2013-12-16 04:29:46
【问题描述】:
我为线程创建了以下内容
int Data_Of_Thread_1 = 1;
int Data_Of_Thread_2 = 2;
Handle_Of_Thread_1 = 0;
Handle_Of_Thread_2 = 0;
HANDLE Array_Of_Thread_Handles[2];
Handle_Of_Thread_1 = CreateThread( NULL, 0,ModbusRead, &Data_Of_Thread_1, 0, NULL);
Handle_Of_Thread_2 = CreateThread( NULL, 0,ModbusWrite, &Data_Of_Thread_2, 0, NULL);
现在我必须控制这两个线程的执行。条件如下:
function ModbusWrite
{
if (condition1 true)
{
Pause thread1
if(condition2 true)
{
resume thread1
}
}
}
我浏览了这些网站。他们说同步元素是事件、互斥体、信号量。等我想我必须使用事件或互斥锁。但我不太清楚如何使用它们。首先,我们创建创建事件或创建互斥锁,然后如何在上述条件下应用这些事件或互斥锁。我也不清楚“WaitForSingleObject”功能。在哪里以及如何实施。如果有人可以帮助我编写代码,那将不胜感激。
【问题讨论】:
-
什么保护条件?是什么改变了他们?此外,从不考虑通过暂停或恢复线程来强制线程从外部做正确的事情。只需对其进行编码以首先做正确的事情本身。不要想“我如何控制 thread1 让它做正确的事情”,想想“我如何为 thread1 本身编写代码,让它做正确的事情”。
-
条件为外部条件。当它们触发某些东西时,我正在将我的程序与外部软件连接起来,我必须运行这两个功能。此外,我必须不断检查外部软件是否已触发。我已经与两个外部方进行了交互。所以我创建了两个线程,以便它可以连续检查它们是否已触发。
标签: c++ multithreading winapi