簡體   English   中英

如何停止/中斷boost :: thread?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM