我正在考慮在我的應用程序中使用C++ 0x線程而不是Boost線程。然而,我不確定如何重新實現我的標準C++ 0x線程,因爲它們似乎沒有interrupt()
方法。如何中斷一個正在等待的C++ 0x線程?
我目前的設置是:
- 管理工作的一個主線程;
- 幾個執行主命令的工作線程。
工人在至少兩個不同的條件變量上調用wait()
。師父有一個「超時」狀態:在這種情況下,它告訴所有工作人員停止並給出他們當時得到的結果。使用Boost線程主機只在線程組上使用interrupt_all()
,這會導致工作人員停止等待。如果他們現在還沒有等待,主人還會設置一個bool
標誌,定期檢查工人。
但是,在C++ 0x std::thread
我看不到任何替代interrupt()
。我想念什麼?如果沒有,我怎樣才能落實上述計劃,使工人不會永遠睡眠?
我想我會繼續使用Boost線程。他們也是越野車,但至少我對他們有一個穩定的解決方法。 – doublep 2010-05-17 13:47:09