1. 程式人生 > >QT多執行緒臨界資源互斥

QT多執行緒臨界資源互斥

多執行緒是個老梗,一般都會遇到,同樣臨界資源的互斥訪問也是一個老生長談的問題了。這裡把最近使用的一種方法分享一下。

問題場景:主執行緒根據一定條件建立多個子執行緒,子執行緒執行的是同一個類不同例項的方法,該方法中需要向主執行緒傳送一個訊息顯示一個對話方塊用以接收使用者輸入;

問題表現:每一個執行緒都會向主介面傳送訊息,那麼就可能會同時發,但是同一時間,對話方塊只能出現一個,否則使用者會迷惑,因此傳送訊息和處理輸入這部分程式碼就是一個需要互斥訪問的程式碼塊。

解決辦法:

static QMutex mutex;

mutex.lock();

.....do something

mutex.unlock();