1. 程式人生 > >boost::thread新建執行緒如何不阻塞

boost::thread新建執行緒如何不阻塞

boost.thread,google了下基本都是用join的方式執行執行緒,但是這樣不是阻塞住了麼,那如果我想繼續執行join下面的語句就不行了,有沒有別的方法?

join:等待執行緒結束,但如果執行緒裡面有while(1)迴圈,那麼執行緒將永不結束(除非主程式退出執行),如果我想繼續執行join下面的語句就不行了。

為了防止程式終止,就需要對新建執行緒呼叫join() 方法。join() 方法是一個阻塞呼叫:它可以暫停當前執行緒,直到呼叫 join() 的執行緒執行結束。

static void onRun()
{

	for(;;)

	{

		//do sth

	}
}
boost::thread th(&onRun);

th.timed_join(boost::posix_time::seconds(1));

//這樣主執行緒在onRun迴圈停留一秒鐘就會返回,不會阻塞


//