首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >条件变量备选方案( windows xp上的c/c++)

条件变量备选方案( windows xp上的c/c++)
EN

Stack Overflow用户
提问于 2011-06-11 21:51:08
回答 4查看 4K关注 0票数 2

我想写一个线程,它从一个无限大小的任务容器中运行任务。

当任务列表为空时,尝试获取任务的线程应该被阻塞。

我来自Linux,我想使用条件变量,它将在添加任务时发出信号,并在列表为空时等待。

我发现CONDITION_VARIABLE只能在windows Vista上使用,所以这是毫无疑问的。由于没有大小限制,信号量也是有问题的。

有没有适当的补偿?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-11 22:08:54

为什么说信号量是有问题的?Linux/Windows都有信号量的最大计数,实际上可以用“无限制”来描述。

在Windows上使用James的建议-它会工作得很好。初始化。您的信号量计数为零。将一个任务添加到您的大(线程安全)容器中,然后向信号量发送信号。在线程中,等待信号量,然后从容器中获取任务并对其进行处理。如果您愿意,您可以将信号量实例传递给多个线程-这样也可以正常工作。

Rgds,Martin

票数 1
EN

Stack Overflow用户

发布于 2011-06-11 22:12:56

听起来你想要一个Win32内核事件。参见CreateEvent

票数 1
EN

Stack Overflow用户

发布于 2011-06-11 21:52:57

WaitForSingleObject和CreateSemaphore?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6316286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档