如何将数据传递到同一进程中的另一个线程?我正在使用c ++编写Windows 7操作系统。例如,考虑以下线程:
DWORD WINAPI MyThreadFunction(LPVOID lpParam){
while(true){
//Do the thread's job here
if(gotReturnInstruction()){
//release memory etc.
break;
}
}
return 0;
}
只要某个其他线程告诉它返回,该线程就会完成它的工作。我有线程的句柄,我从' CreateThread()'功能。 如何将消息传递给线程(在本例中为stop instruct)?
答案 0 :(得分:3)
您不会将停止指令“推送”到线程。相反,该线程需要“轮询”一个停止指令。如果线程处于循环中并且一直执行工作,它可以检查stop指令,就像检查主线程设置的全局变量bool stopThread
一样。
但是,如果线程只是位于while (true)
循环中,除了检查此全局变量之外什么都不做,它会将CPU使用率提高到100%。在这种情况下,在event上调用WaitForSingleObject
,它会休眠你的线程,直到主线程“发出信号”并唤醒它。