如何在运行时将信息传递给线程?

时间:2015-03-04 15:15:57

标签: c++ windows multithreading

如何将数据传递到同一进程中的另一个线程?我正在使用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)?

1 个答案:

答案 0 :(得分:3)

您不会将停止指令“推送”到线程。相反,该线程需要“轮询”一个停止指令。如果线程处于循环中并且一直执行工作,它可以检查stop指令,就像检查主线程设置的全局变量bool stopThread一样。

但是,如果线程只是位于while (true)循环中,除了检查此全局变量之外什么都不做,它会将CPU使用率提高到100%。在这种情况下,在event上调用WaitForSingleObject,它会休眠你的线程,直到主线程“发出信号”并唤醒它。