5
A
回答
0
也許你想發出一個信號?
我真的很喜歡Qt的信號和插槽功能,我知道Boost也有信號/插槽。不過,我從來沒有使用Boost中的信號/插槽。
3
那麼你可以旋轉一個線程,然後再不加入它。喜歡的東西:
boost::thread some_thread(&SomeFunction, param1, param2);
一旦some_thread變量超出範圍,執行的線程會單獨將無法再次加入。除非這個函數的處理時間是重要的,否則加速一個線程是浪費。
3
我沒有使用過的boost ::線程一段時間,但我看到的documentation page for the class一個簡單的例子:
void find_the_question(int the_answer);
boost::thread deep_thought_2(find_the_question,42);
我只要它完成的功能相信,該線程將退出。這可能不是你想要的,一旦線程超出範圍,它將被銷燬。如果這不起作用,您可能需要創建一個長時間運行的線程池,然後將您的函數作爲boost :: bind組合傳遞。
1
根據您這樣做的頻率,您最好創建一個線程池以及一個工作隊列。如果你想每秒鐘做幾十次,創建一個線程會產生很多開銷。如果你不關心返回值,那就很容易。
旋轉一個或兩個(或十個)線程;有一個線程安全的函數隊列調用(將參數綁定到函數並將其放入隊列中);線程在隊列中等待顯示某些內容,第一個要喚醒的線程將處理該工作。當一個線程完成一項任務時,它會再次等待隊列。
看一看this project就可以瞭解一種方法。
當然,如果您只是每隔幾秒就會調用一次異步調用來提高UI的響應速度,那麼每次只啓動一個新線程會更容易。
相關問題
- 1. 需要採樣並忘記WCF服務的異步調用
- 2. 調用異步觸發器,並忘記帶JMeter的SOAP webservice
- 3. 消防與異步忘記
- 4. 並行函數調用與異步
- 5. 調用異步函數
- 6. 異步函數調用
- 7. 異步PHP函數調用
- 8. 異步調用函數?
- 9. 異步調用函數
- 10. 異步調用函數
- 11. boost asio異步寫入處理函數自己調用
- 12. 無法啓動異步服務調用
- 13. 如何:在Kotlin中觸發並忘記異步協程
- 14. 在回調中調用異步函數
- 15. boost :: signals slots是同步調用還是異步調用?
- 16. 運行並忘記系統調用php
- 17. 異步調用後暫停轉換並重新啓動
- 18. 如何用Perl啓動多個fire並忘記PHP腳本?
- 19. 如何在異步函數結束時啓動函數c#UWP
- 20. 使用Emscripten異步調用C++函數
- 21. 異步函數異步函數
- 22. 模擬異步函數調用
- 23. Flex中的異步函數調用
- 24. Angular2 canActivate()調用異步函數
- 25. 循環內的異步函數調用
- 26. 如何遞歸調用異步函數?
- 27. 異步watefall不會調用函數
- 28. 調用異步函數for循環
- 29. 在JavaScript中異步調用函數
- 30. 通用異步回調函數
唯一的問題是,這可能不會異步工作,如果這樣做,那麼它可能需要一個事件循環設置爲「發佈」信號到循環。否則,你會回到只是把它扔在一個線程上,忘記它。 – 2008-10-01 03:34:56