我有一個函數,多個線程可以同時調用它。這個函數有一個輸入參數。例如,請考慮以下功能:使用多線程中的輸入參數調用函數
bool MyClass::run(QString moduleName)
{
qDebug() << QThread::currentThreadId();
...
}
我有兩個使用此功能的選項。調用像下面這個函數的時候
...
run("Reza"); // can be different for different threads
...
bool MyClass::run(QString moduleName)
{
qDebug() << QThread::currentThreadId();
QMutexLocker locker(&runMutex);
...
}
二是使用互斥:
...
runMutex.lock();
run("Reza"); // can be different for different threads
runMutex.unlock();
...
bool MyClass::run(QString moduleName)
{
qDebug() << QThread::currentThreadId();
...
}
哪一個是正確的,更好的首先,我可以用一個互斥run函數裏面像下面?輸入參數(moduleName)是否在第一個選項中更改? (我的意思是當調用線程通過此功能不同的參數)
在此先感謝您的幫助。 Reza
你想用你的互斥鎖保護哪個資源? (並且'qDebug()'在你的第一個片段中沒有被保護)。 – Jarod42
定義「更好」... –
@ Jarod42我有我的「運行」功能,我想用互斥保護一些共同的資源。我知道qDebug()沒有被保護。 – Reza