QThread之Mutex

来源:互联网 发布:知入与知出议论文答案 编辑:程序博客网 时间:2024/05/16 02:08

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();}


0 0
原创粉丝点击