我目前正在開發一個程序,需要從套接字服務器下載一些圖片,並且下載工作將會執行很長時間。所以,我創建了一個新的std::thread
來做到這一點。如何終止一個std ::線程?
下載後,std::thread
會調用當前類的成員函數,但該類很可能已經發布。所以,我有一個例外。
如何解決這個問題?
void xxx::fun1()
{
...
}
void xxx::downloadImg()
{
...a long time
if(downloadComplete)
{
this->fun1();
}
}
void xxx::mainProcees()
{
std::thread* th = new thread(mem_fn(&xxx::downloadImg),this);
th->detach();
//if I use th->join(),the UI will be obstructed
}
歡迎來到Stack Overflow!我儘可能地猜測你的問題,然後編輯你的問題。但是,添加對代碼和描述的解釋,以便更多具有該主題知識的人員可以看到它。如果需要識別特定問題,請編輯您遇到的特定錯誤消息。祝你好運! – manetsus
爲什麼不使用'std :: future'? –
Superlokkus
[C++ 0x線程中斷]的可能重複(http://stackoverflow.com/questions/2790346/c0x-thread-interruption) – kfsone