qmutex

    1熱度

    3回答

    我只是想執行下面的代碼。 QString Class1::getNonce() { //if some thread is getting nonce wait here until it finishes the its own job. mutex.lock(); QString nonce=QString("%1").arg(QDateTime::curren

    2熱度

    1回答

    我需要實現一個有兩種方式的互斥體:1.保護跨多個類的資源,以及2.保護類中某個方法的資源插槽並且可以是可重入的。例如(僞C++): Class A { function aaa() { QMutex mutex; mutex.lock(); globalvar++; mutex.unlock() } } Class B {

    1熱度

    1回答

    我需要保護資源不被中斷,在這種情況下寫入套接字。我有一個類TelnetServer,它被多次實例化(每次使用一次連接)。 我想防止寫入單個用戶被另一個寫入同一用戶(即鎖定互斥鎖寫入該同一個套接字)中斷。但是,當我寫入單個用戶時,我不想凍結所有寫入所有套接字的所有寫入。爲了澄清(僞C++): Class TelnetThread { QMutex mutex; void wri

    1熱度

    1回答

    我正在努力尋找一些非常基本的東西,我希望有人能幫助澄清。就拿這個僞C++代碼: class T { public QMutex M; int I; } 如果我實例化此類三次(如3個線程),是否有3個獨立的和不相關的M和I變量?或者所有3個實例共享相同的M和I變量? 如果一個類有幾個可重入方法(例如:插槽),並且他們訪問M或I,他們訪問該類的一個實例的M還是I?

    1熱度

    1回答

    我有一個QML應用程序,用戶內部使用。有一個定時器監聽服務器的工作順序,然後在應用程序中插入所有信息到SQLite數據庫。用戶也可以在SQLite中更改數據(更新,刪除等)。 我的問題是,如何防止SQLite表上的多操作。只有一個操作必須對SQLite起作用(選擇,刪除,插入,更新....)我不知道但是,Mutex.lock結構可以用於此。還是有一些錯誤的SQLite的多種業務

    0熱度

    1回答

    我是PyQt編碼的新手。我正嘗試從父級啓動子進程(GUI)。在此我使用waitcondition和互斥瞭解其functionality.Here是我的代碼: import sys from PyQt4 import QtGui, QtCore waitCondition = QtCore.QWaitCondition() mutex = QtCore.QMutex() class Chi

    0熱度

    1回答

    我有一個單一類實現使用Q_GLOBAL_STATIC包含一個數據結構,必須從多個線程訪問,我在類中實現訪問器函數,這將訪問數據,以便所有對共享數據的訪問都被序列化。 的問題是,我想在一個QAbstractTableModel使用這些數據,我可以簡單地從我重寫data(),columnCount()和rowCount()使用存取功能,我實現並獲得一個項目在一個時間。但我認爲這是不夠的,因爲在後續的兩

    13熱度

    1回答

    我有線程安全的Document類代表自定義文檔。 它有getters(const函數)和setter來修改它的狀態。 所有這些函數都受互斥鎖保護,以保證文檔不會更改 ,直到方法完全執行。 但由於QMutex的使用,我不能標記狀態訪問功能 爲const沒有mutable的用法。捕獲QMutex更改它的狀態。 此代碼是否正確,或者它可以用更好的方式書寫? 沒有hacky mutable的用法。 cla

    0熱度

    1回答

    這是一個全局變量: extern int i; 兩個線程一個 & 乙嘗試訪問和寫入變量我,在螺紋一個功能,就像下面: void funA(int *i) { QMutexLocker(&m_mutex); //to lock the process *i += 5; } 和螺紋乙處理功能: void funB(int *i) { QMutexLocker

    2熱度

    1回答

    我做了發現過程在後臺線程運行函數時保護共享變量: // Start the discover process in the background thread so it doesn't block the gui *m_Future = QtConcurrent::run(this, &Controller::StartDiscover); m_Watcher->setFuture(*m_F