[英]How to stop/interrupt a boost::thread?
我在函數中創建一個線程,在另一個函數中,我想停止這個線程。 我試過這樣的:
class Server
{
private:
boost::thread* mPtrThread;
...
public:
void createNewThread()
{
boost::thread t(...);
mPtrThread = &t;
}
void stopThread()
{
mPtrThread->interrupt();
}
}
但它不起作用。我怎么能阻止線程?
如果要使用interrupt(),則應定義中斷點 。 一旦到達其中一個中斷點,線程將在調用interrupt()后中斷。
首先,在createNewThread()
,在本地作用域中聲明一個boost::thread t
,並將其指針指定給類成員mPtrThread
。 在createNewThread()
完成后, t
被銷毀,mPtrThread將保存非法指針。
我寧願使用像mPtrThread = new boost::thread(...)
;
您可能還想閱讀本文以了解有關Boost中多線程的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.