主线程用来发送数据,子线程用来接收处理数据。主线程每发送完一个数据,子线程会接收到一个应答,主线程需等待子线程处理完毕,才能发送下一个数据。用CEvent类定义事件,在子线程中,当数据处理完毕,把事件置位。同时在主线程中用WatitForSingleObject等待事件,但是这么做会造成主线程死锁。请问该如何处理这个问题或者有没有其他方案??
------解决思路----------------------
子线程处理完毕,给主线程PostMessage一个自定义消息
------解决思路----------------------
不要这样同步,这样让主线程等待子线程是错误的。应该反过来,子线程等待主线程为佳。或者为了提高程序的响应速率,直接取消同步,采用异步,按照进栈出栈方式处理数据。
主线程压栈-->[栈尾]
[栈中]
...
子线程出栈-->[栈头]
主线程创建new array[]内存
子线程释放内存;
这样做的好处是取消耽误开销的同步,坏处是如果子线程来不及响应,内存增加速率过快,可能会有部分内存没得到释放,导致直接蓝屏