加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

为win32 / C阻塞线程生产者/消费者的队列

发布时间:2020-12-14 01:36:35 所属栏目:Windows 来源:网络整理
导读:我正在尝试用自定义队列替换一些线程通信,生产者当前正在使用 PostThreadMessage,使用者正在使用WaitForSingleObject / PeekMessage. http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html将
我正在尝试用自定义队列替换一些线程通信,生产者当前正在使用
PostThreadMessage,使用者正在使用WaitForSingleObject / PeekMessage.

http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html将是我需要的,但是升力和C不是一个选择.

不想重新实现轮子,是否有人在C中实现这样的队列?

解决方法

使用IO完成端口(见 here)作为队列;它们不需要仅与I / O操作相关,并且非常易于使用并且执行得非常好,因为可以设置内核来限制线程池中运行的线程数.

基本上你调用PostQueuedCompletionStatus()将项放在队列上,GetQueuedCompletionStatus()将它们取下.您无需担心同步等问题.

如果您需要更多帮助才能使它工作,那么您可以查看我的free high performance server framework,其中包含相当多的IOCP代码,包括与I / O无关的独立线程池.请注意,这是在C中,但它应该让您很好地了解C API如何挂起.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读