有boost::condition_variable
其等待線程來完成:加入後線程上的共享指針數爲1?
boost::condition_variable mContd;
boost::shared_ptr<boost::thread> mThread;
試想一下,線程開始前一段時間,現在等待:
if(!mContd.timed_wait(tLock, boost::posix_time::seconds(1))) {
// cancel thread if deadline is reached
mThread.interrupt();
mThread.join();
std::cout
<< "Thread count = "
<< mThread.use_count() // still prints '1'
<< std::endl;
} else {
// continue
}
所以,當這個計數設爲零?我假設,join
之後線程完成。但是什麼時候?
這意味着,如果mThread是全球性的,只有程序結束後?按照預期,在程序開始時,'use_count'是一個零。 – Benjamin
@Benjamin:啓動時爲零,因爲共享指針是空的。你可以通過調用'mThread.reset()'來重新清空它。看到我更新的答案。 – NPE