2015-04-28 111 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。

    看看他們,找到最適合你的人。