У меня есть функция, которую несколько потоков могут вызывать одновременно. Эта функция имеет входной аргумент. Например, пожалуйста, учитывайте следующие функции:Вызов функции с входными аргументами в многопоточности
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();
...
}
, который один является правильным и лучше? Изменяется ли входной аргумент (moduleName) в первом параметре? (Я имею в виду при вызове thread pass другой аргумент этой функции)
Заранее благодарим за помощь. Reza
Какой ресурс вы хотите защитить с помощью мьютекса? (и 'qDebug()' не защищен в вашем первом фрагменте). – Jarod42
определить «лучше» ... –
@ Jarod42 У меня есть общий ресурс в моей функции «run», которую я хочу защитить с помощью мьютекса. Я знаю, что qDebug() не защищен. – Reza