2013-04-08 25 views
0

我是Qt的新手。我沒有在合理的時間內找到答案,並決定在這裏問。Qt插槽同時斷開和來自不同的小島的呼叫

我有一個線程,我們把它稱爲Thread1與Qt對象有一個連接的插槽。信號從同一線程發出(Thread1)。 而我正在斷開此插槽與另一個Thread2

此操作是否線程安全? 如果發射信號並且插槽完全在同一時間斷開,是否有任何問題?

回答

1

只看該文檔,它看起來安全的對我說:

http://qt-project.org/doc/qt-4.8/qobject.html

注:本類中的所有功能都折返,但連接(),連接(),斷開()和disconnect()也是線程安全的。

http://qt-project.org/doc/qt-4.8/qobject.html#disconnect

注:此功能是線程安全的。

還要確保在將一個線程的信號連接到另一個線程的插槽時使用了排隊連接。如果在連接期間兩個對象碰巧在同一個線程中,則自動連接可能會行爲不當(並進行直接連接)。

希望有所幫助。

編輯:更多關於線程安全:

http://qt-project.org/doc/qt-4.8/threads-reentrancy.html

http://qt-project.org/doc/qt-4.8/threads-qobject.html

+0

嘛。我讀過這個,但我不確定我的問題。看。這是什麼意思 - 「線程安全功能」? - 這意味着一個函數有一個互斥量的王,它可以防止與另一個受互斥鎖保護的函數同時執行。但是,如果一個函數具有互斥量守護程序,另一個函數不具有線程安全性,但它們的同時執行不是線程安全的,儘管它們中的一個是線程安全的。所以,我想知道 - 信號/插槽執行過程是否受到斷開功能的同時執行保護。文件是否暗示了這一點?因爲它對我來說並不明顯 – Vasily 2013-04-09 07:36:59

+0

那麼如果你問'這個操作是否線程安全?'人們假設你知道'線程安全'是什麼意思。 – UmNyobe 2013-04-09 10:17:59

+0

我do___________ – Vasily 2013-04-09 17:04:13