我有一個QThread
從網上提取數據。有時候用戶會要求別的東西,而且數據也需要被提取出來。QThread在調用isRunning時調用
在我當前的配置中,我在線程上調用terminate()
,更改輸入數據,並再次在線程上調用start()
。現在,這很好,但有時我會在終止的線程上調用isRunning()
或isFinished()
時卡住主事件回調。它被永久卡住了,直到我殺死這個過程才恢復。
- 爲什麼會
isRunning()
或isFinished()
掛在首位?他們不會阻止。 - 這個工作流程是否可以接受?如果不是這樣,當我不再需要它時(或者我怎麼能放棄它),我怎麼能阻止一個線程的進程?
我的帖子不包含任何互斥體。它從Web獲取數據並通過信號發送給主線程。隨時殺死它很好,並且不需要清理任何東西。另外,關閉線程並不會破壞'isRunning()'的行爲。 – iTayb
QThread本身擁有的互斥體呢?我敢打賭[這](http://qt.gitorious.org/qt/qt/blobs/4.8/src/corelib/thread/qthread.cpp#line465)是'isRunning'懸掛的地方,但很難說,我無法複製它。 – mata