当前位置: 首页 > news >正文

QT 互斥锁

一、概述

1、在多线程编程中,为了防止多个线程同时访问共享资源而导致的不确定性和错误,经常会使用互斥锁(Mutex)进行保护。

2、QMutex是Qt提供的一个互斥锁类,用于确保在同一时间只有一个线程访问共享资源

3、QMutexLocker就是在使用QMutex时的便利工具类。它在构造函数中自动锁定给定的QMutex对象,并在析构函数中自动解锁。这样可以有效地保证锁的正确使用,避免由于异常或忘记解锁时而导致地资源泄露或死锁。

二、使用方式

方式一:

mutex.lock();
//这里处理共享资源
mutex.unlock();

方式二:

QMutexLocker locker(&mutex);
//这里处理共享资源

三、示例

1、未加锁:

//共享资源
int sharedValue = 0;
//互斥锁
QMutex mutex;

class MThread : public QThread
{
public:
    void run() override
    {
        for(int i = 0; i < 5; i++)
        {
            // 访问共享资源
            sharedValue++;
            qDebug() << "Thread ID: " << QThread::currentThreadId()
                     << "Shared Value: " << sharedValue;

            msleep(1000);
        }
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MThread thread1;
    MThread thread2;

    thread1.start();
    thread2.start();

    thread1.wait();
    thread2.wait();

    return a.exec();
}

运行结果:

2、加锁后 :

class MThread : public QThread
{
public:
    void run() override
    {
        for(int i = 0; i < 5; i++)
        {
            QMutexLocker locker(&mutex);
            // 访问共享资源
            sharedValue++;
            qDebug() << "Thread ID: " << QThread::currentThreadId()
                     << "Shared Value: " << sharedValue;

            // 线程休眠1秒
            msleep(1000);
        }
    }
};

运行结果:

 结果分析:明显看出在未加锁情况下对临界资源的访问出现混乱的结果

相关文章:

  • 初识React
  • 2025年 Java 技术的新趋势
  • FreeRTOS第3篇:链表的“精密齿轮”——列表与列表项
  • ubuntu桌面东西没了,右键只有更换壁纸,显示设置和设置
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_ssl_init 函数
  • 常用的网络安全设备
  • 我的docker随笔46:在x86平台构建龙芯镜像
  • (三)Axure制作转动的唱片
  • 牛客刷题自留-机械学习基础
  • 【LeetCode】438.找到字符串中所有的字母异位词
  • 【MySQL】# Windows下安装(压缩包、msi);Linux下安装(压缩包、命令、docker);设置连接数、binlog日志;修改时区
  • HTML之JavaScript循环结构
  • 详解Redis数据结构(附源码)
  • Visonpro 检测是否有缺齿
  • 【Flink快速入门-5.流处理之多流转换算子】
  • STM32的DMA解释
  • Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)
  • 案例-05.部门管理-新增
  • 数据大屏炫酷UI组件库:B端科技风格PSD资源集
  • RISC-V平台编译 state-thread x264 ffmpeg zlog
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 国家发改委:我国能源进口来源多元,企业减少甚至停止自美能源进口对国内能源供应没有影响
  • 气温“过山车”现象未来或更频繁且更剧烈
  • “2025上海西九文化周”启动,香港顶尖文艺6月齐聚申城
  • 广东东莞调整普通住宅价格标准:一类镇街上浮300余元/平方米
  • 何立峰出席跨境贸易便利化专项行动部署会并讲话