使用QMutexLocker类实现线程同步
当多个线程同时访问共享资源时,为了避免数据竞争和结果不确定的情况,需要对这些线程进行同步。Qt提供了QMutexLocker类来实现线程同步。
QMutexLocker类是QMutex的封装,它自动创建一个QMutex实例并在构造函数中对其进行加锁,在析构函数中对其进行解锁,从而保证了线程安全。
使用QMutexLocker类的代码如下:
#include <QMutex>
#include <QThread>
QMutex mutex;
void writeToLog(QString message){
QMutexLocker locker(&mutex); // 创建QMutex实例并加锁
// 写入日志文件
}
void threadFunction(int id){
for(int i=0; i<10; i++){
QString message = QString("Thread %1: message %2").arg(id).arg(i);
writeToLog(message);
QThread::msleep(100); // 线程休眠100毫秒
}
}
int main(){
QThread thread1, thread2;
thread1.setObjectName("Thread 1");
thread2.setObjectN