在WIN32的C++多线程开发中的生产消费使用的同步方案中,一般会采用 条件变量,来做为等待判断的条件。
我在网狐的工作线程中看见了一种新的使用方法:
工作线程使用 GetQueuedCompletionStatus 等待事件触发。
生产线程使用 PostQueuedCompletionStatus 产生消息,另 GetQueuedCompletionStatus 触发执行。
我在网络中找资料,并没有关于多线程 同步使用 IOCP 完型端口的案例。
都是使用信号量,互斥,临界,事件,性能上临界的性能相对较优,我看了网狐的实现方式,这种采用 IOCP的方法反而是最简单的。
问题来了: 使用IOCP 作为生产消费的实现方案,有什么优势或者相关的资料呢?国内网络找到的都是清一色的网络编程的异步I/O。
这看上去是API帮你做了同步处理。
你要资料?MSDN不行呢?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365198(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364986(v=vs.85).aspx
java中通过同步代码快或同步对象进行限制