我想写一个线程,它从一个无限大小的任务容器中运行任务。
当任务列表为空时,尝试获取任务的线程应该被阻塞。
我来自Linux,我想使用条件变量,它将在添加任务时发出信号,并在列表为空时等待。
我发现CONDITION_VARIABLE只能在windows Vista上使用,所以这是毫无疑问的。由于没有大小限制,信号量也是有问题的。
有没有适当的补偿?
谢谢
发布于 2011-06-11 22:08:54
为什么说信号量是有问题的?Linux/Windows都有信号量的最大计数,实际上可以用“无限制”来描述。
在Windows上使用James的建议-它会工作得很好。初始化。您的信号量计数为零。将一个任务添加到您的大(线程安全)容器中,然后向信号量发送信号。在线程中,等待信号量,然后从容器中获取任务并对其进行处理。如果您愿意,您可以将信号量实例传递给多个线程-这样也可以正常工作。
Rgds,Martin
https://stackoverflow.com/questions/6316286
复制相似问题