我目前正在爲提升線程小包裝類,但我不真正得到睡眠功能是如何工作的,這是我這麼遠:boost :: thread sleep()是做什麼的?
BaseThread::BaseThread(){
thread = boost::thread();
bIsActive = true;
}
BaseThread::~BaseThread(){
join();
}
void BaseThread::join(){
thread.join();
}
void BaseThread::sleep(uint32 _msecs){
if(bIsActive)
boost::this_thread::sleep(boost::posix_time::milliseconds(_msecs));
}
這是我是如何實現這麼遠,但我真的不明白如何靜態this_thread ::睡眠方法知道哪些線程睡覺,例如我的線程包裝的多個實例處於活動狀態。這是實施它的正確方法嗎?
檢查代碼像什麼?中斷似乎也是一個好方法。 – user240137 2009-12-29 11:53:20
我的意思是「檢查代碼」是在由給定線程執行的代碼中,某處存在一個'if'來檢查是否需要睡覺並在必要時進行。例如,如果你的線程運行一個帶有大循環的函數,那麼在循環迭代的每一端檢查它是否需要休眠(通過檢查當前代碼設置的布爾值)就足夠了。但在你的情況下,你不想侵入你的線程代碼,所以中斷似乎是一個更好的選擇。 – Klaim 2009-12-29 13:16:07