1.Mutex被频繁的使用于控制多个线程的控制,Mutex来锁住资源,或者控制资源的量,这样就达到某个地方的同步,记得使用这种方法的有个很优雅的算法,记得是在某个小型嵌入系统看过,大概是这样的,如果某这资源被多个线程引用,那么这些线程会被放在一个邮箱队列中,来依次处理资源...
2.QMutex只是lock与ublock,或者设置lock与unlock的次数,普通情况下我们只是lock与unlock对应一次就说明资源被释放了
#include <QCoreApplication>
#include <QtConcurrent/qtconcurrentrun.h>
#include <QMutex>
#include "mythread.h"
QMutex mutex(QMutex::NonRecursive);
void myRunFunction(QString name)
{
mutex.lock();
for(int i=0;i<=5;i++){
qDebug() << name << " " << i << "from" << QThread::currentThread();
}
mutex.unlock();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFuture<void> t1 = QtConcurrent::run(myRunFunction,QString("A"));
QFuture<void> t2 = QtConcurrent::run(myRunFunction,QString("B"));
QFuture<void> t3 = QtConcurrent::run(myRunFunction,QString("C"));
t1.waitForFinished();
t2.waitForFinished();
t3.waitForFinished();
return a.exec();
}