那如果是在qt里呢
时间: 2023-11-04 17:14:48 浏览: 18
在 Qt 中,可以使用 QMutex 类来实现线程锁。具体实现可以参考以下代码:
```cpp
#include <QMutex>
QMutex mutex;
int value = 114;
void changeValue(int num)
{
QMutexLocker locker(&mutex);
value += num;
qDebug() << "value is now:" << value;
}
QThread* thread1 = new QThread;
QThread* thread2 = new QThread;
QObject::connect(thread1, &QThread::started, [](){
changeValue(3);
});
QObject::connect(thread2, &QThread::started, [](){
changeValue(5);
});
thread1->start();
thread2->start();
thread1->wait();
thread2->wait();
qDebug() << "final value:" << value;
```
使用 QMutex 类创建了一个名为 mutex 的互斥锁对象,然后在 changeValue 函数中,使用 QMutexLocker 类来获取锁,确保同一时间只有一个线程能够修改变量 value 的值。这样,即使多个线程同时调用 changeValue 函数,也不会出现数据竞争的情况,保证了结果的正确性。
希望这次的回答能够解决您在 Qt 中的疑惑。
阅读全文