使用Cute中的互斥和条件变量实现Monitor信令

时间:2009-07-31 07:09:20

标签: c++ multithreading synchronization

是否有任何机构使用C ++中的互斥和条件变量实现了一个带信号的监视器(唤醒等待线程)。

我不知道如何开始。任何示例代码或在线文章都会很棒。 是否有任何开源库实现了这些?

我需要Windows和Linux。但是从Windows(win32)开始会很好。

5 个答案:

答案 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.cprmon.h

文档:prmon.html