2015-04-28 81 views
0

我想告诉一个线程,它的确定继续计算其他线程从命名管道读取数据后。目前,我有一段时间无限循环,每次检查新数据。但这是效率低下,因为它消耗100%的CPU ...同步线程和信令

我的问题是...有什么办法可以等到一个线程检查新数据并告诉其他线程可以继续像一个信号)?

+7

你的问题正是[内部条件变量](http://en.cppreference.com/w/cpp/thread/condition_variable)的内容来解决。 – huu

+0

在这种情况下,使用互斥锁是有意义的。 检查此[链接](https://stackoverflow.com/questions/4989451/mutex-example-tutorial) – VirtualSnake

回答

-2

Qt拥有你想要的一切,QThread的工作与良好的信号和槽。

+1

C++ 11标准库也具有所需的一切,并且通常是第一个考虑的选项,但考虑到问题意味着现有的线程代码 - 无论已经在使用的库是否可以用于此... –

+0

Qt可用于他的问题,他问我回答,问题是什么? – klatoverato

0

有你的问题的各种解决方案:++ Boost.Signals2或Boost.Signals(不建议使用)

  • C:

    • 信号和槽Qt的
    • C++的模型libsigC++ - 基于模板的
    • C++:sigslot
    • C++:XLObject - 基于模板,面向Qt。
    • C++:信号
    • C:libevent的 - 多线程,platformindependent
    • C:libev - 最小替代LIBEVENT。

    看看他们,找到最适合你的人。