QT开发中文网

qt中互斥锁的使用

在Qt中,可以使用QMutex类实现互斥锁的功能。以下是一个示例代码,演示了如何在Qt中使用互斥锁:

#include <QCoreApplication>
#include <QMutex>
#include <QThread>
#include <QDebug>

// 全局变量
int counter = 0;
QMutex mutex;

class Worker : public QThread
{
public:
    void run() override
    {
        for (int i = 0; i < 10000; ++i)
        {
            // 使用互斥锁来保护共享资源
            mutex.lock();
            ++counter;
            mutex.unlock();
        }
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    Worker worker1;
    Worker worker2;

    worker1.start();
    worker2.start();

    // 等待工作线程完成
    worker1.wait();
    worker2.wait();

    qDebug() << "Counter: " << counter;

    return app.exec();
}

在上面的示例中,我们创建了两个工作线程(Worker),每个线程都会进行10000次自增操作,并且通过互斥锁保护共享资源 counter。运行该程序,最终输出的结果应该是20000。

通过 mutex.lock()mutex.unlock() 函数来控制对共享资源的访问,确保同一时间只有一个线程能够修改它。

请注意,在使用互斥锁时要小心避免死锁情况的发生。同时,请根据具体的需求考虑使用更高级别的锁,如QReadWriteLockQSemaphore等,以满足不同的线程同步需求。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=10183

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?