是否有任何机构使用C ++中的互斥和条件变量实现了一个带信号的监视器(唤醒等待线程)。
我不知道如何开始。任何示例代码或在线文章都会很棒。 是否有任何开源库实现了这些?
我需要Windows和Linux。但是从Windows(win32)开始会很好。
答案 0 :(得分:2)
This Qt Quarterly article解释了如何使用Qt的QMutex和QWaitCondition来做到这一点。但是您应该能够使用您想要使用的任何互斥类来重新实现它。
另请参阅here ..
中的更高级示例答案 1 :(得分:2)
与样本一起查看boost::thread::condition_variable。 它可用于在有或没有超时的情况下等待条件。我认为这是一个相当优雅的解决方案,在这种情况下应该完全按照您的需要进行,并以便携方式进行。
答案 2 :(得分:0)
我在C ++中使用的所有线程编程都使用了pthreads,它具有您需要的基本构建块。这个article讨论了使用监视器构建块
由于某种原因,该链接不起作用,请将相同的网址粘贴到浏览器中,确实如此。
http://findarticles.com/p/articles/mi_m0VVT/is_10_2/ai_n24998136/
答案 3 :(得分:0)
我在这里为posix系统做了一个:http://asgaard.homelinux.org/svn/cpp/threadqueue/这里有一个C变体:http://asgaard.homelinux.org/wordpress/?p=9
答案 4 :(得分:0)
Mozilla的平台抽象库NSPR (Netscape Portable Runtime)具有跨平台的监视器抽象。这是一个“真正的”实现(例如在Firefox中实际使用),所以它并不简单。但它是一个监视器。
文档:prmon.html