我的程序有一个主线程和一个工作线程,我现在想用工作线程处理些计算,然后主线程继续运行,等子线程计算完成后,通知主线程完成计算,然后主线程接收数据。主要是主线程不要等待子线程,和整个程序的执行效率(如:不要主线程循环查询,它本身有其他重要事情)。这是个很简单的同步问题,希望各位能给出较为理想的解决方案。

解决方案 »

  1.   

    Global variant、Critical Section、Mutex、Semaphore多种机制都可以实现,自己去选择吧。
      

  2.   

    你看这样可不可以:
    1.有数据要计算,那么就启动一个辅助线程去完成计算,主线程继续工作
    2.辅助线程计算完毕后,通过SendMessage()/PostMessage()发送消息给主线程
    3.主线程收到消息,接收相关结果数据这里面要对用到的资源做些同步的工作,比如: 共用的数据块,可以用一些同步的方式,如Critical Section、Mutex、Semaphore等.
      

  3.   

    工作线程工作结束后向主线程发送自定义消息就可以了。
    PostMessage.