前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Qt多线程:使用互斥锁

Qt多线程:使用互斥锁

作者头像
全栈程序员站长
发布2022-07-23 14:59:44
发布2022-07-23 14:59:44
86100
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

1、官方文档:

代码语言:javascript
代码运行次数:0
运行
复制
QMutex类提供线程间的访问序列化。
QMutex的目的是保护一个对象、数据结构或代码片段, 
这样每次只有一个线程可以访问它(这类似于Java synchronized关键字)。 
通常最好将互斥对象与QMutexLocker一起使用,因为这样可以很容易地确保一致地执行锁定和解锁。

2、官方示例:

代码语言:javascript
代码运行次数:0
运行
复制
 QMutex mutex;
 int number = 6;

 void method1()
 {
     mutex.lock();
     number *= 5;
     number /= 4;
     mutex.unlock();
 }

 void method2()
 {
     mutex.lock();
     number *= 3;
     number /= 2;
     mutex.unlock();
 }

即使用户同时调用两个函数,在同一时刻,也只会执行一个函数内操作number的代码。

3、配合QMutexLocker使用

单独使用QMutex时,每次都需要加锁、解锁,显得不太方便,QMutex配合QMutexLocker使用是比较推荐的方法: 头文件:

代码语言:javascript
代码运行次数:0
运行
复制
#include <QMutex> 
...
private:
    QMutex _mutex;
...

同一个例子:使用QMutexLocker极大地简化了代码,并使其更具可读性:

代码语言:javascript
代码运行次数:0
运行
复制
 QMutex m

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126621.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、官方文档:
  • 2、官方示例:
  • 3、配合QMutexLocker使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档