2014-03-13 40 views

回答

1

不,你不能中止QRunnable任務。

到的唯一方法髒中止Qt中的螺紋是通過QThread::terminate()(其泄氣)。

QThreadPool使用QThread幕後運行QRunnable任務,但它不提供開發人員撥打QThread::terminate()的方法。因此,QRunnable不能中止。

我建議重新設計你的應用程序 - 是指Multithreading Technologies in Qt得到的一切,你可以使用線程的方法的概述,並選擇你的使用情況相符的解決方案。

+0

OK!謝謝 ;) – user1638466

2

Qt的股份線程對象模型類似於許多其他框架(在.NET語言和Java浮現在腦海中)。在這些類型的框架中,通常不鼓勵嘗試「中止」一個線程。其他線程實現(如POSIX)在很大程度上是相同的。骯髒殺死一個線程是不好的做法。

相反,構建內部的run()你的邏輯以這樣的方式,你可以把「闖關」中,每隔一段時間,以確定run()函數可以安全地終止。這些檢查點應該檢查一個表示線程應該結束的標誌(或其他一些標誌)。

+0

你是絕對正確的..但我需要修改現有的應用程序(大理石),使用這些任務,我想我可以很容易地阻止他們 – user1638466