Qt多线程同步总结

技术博客 (299) 2023-09-16 16:14:01

1、QMutex


QMutex mutex;

void func()
{
mutex.lock();
........
mutex.unlock();
}

2、QMutex联手QMutexLocker
在复杂函数或者异常处理中,对mutex进行lock()和unlock()操作将会很复杂,进入点要lock(),在所有跳出点都要unlock(),想想都蛋疼!忘记unlock()将是很苦逼的事情,所以Qt引进了QMutexLocker来避免lock()和unlock()操作。

QMutex mutex;

void complexFunc()
{
QMutexLocker locker(&mutex);//在函数需要的地方建立QMutexLocker对象,并把mutex指针传进来就好了,后面什么事情也不用做了,等到退出函数后,这个QMutexLocker对象局部变量会自己销毁,销毁了就解锁了。方便吧。当然,你也可以调用locker.unlock()给mutex解锁,然后再调用locker.relock()再锁住mutex。也可以调用locker.mutex()获取建立locker时引入的那个mutex的指针。是不是很方便?
..........
        ............
}

3、QReadWriteLock
这个允许多个进程同时读,但是只有
THE END

发表回复