广告
返回顶部
首页 > 资讯 > 精选 >QT互斥量怎么实现
  • 166
分享到

QT互斥量怎么实现

2023-06-19 11:06:17 166人浏览 八月长安
摘要

本篇内容介绍了“Qt互斥量怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!访问同一数据的多个任务(线程)的代码随机交替执行,是任务(线

本篇内容介绍了“Qt互斥量怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

访问同一数据的多个任务(线程)的代码随机交替执行,是任务(线程)间数据交换不能正常进行的原因。那么对策就显而易见:想办法让访问同一段数据的代码不会同时(时间上有交叉)执行即可。

其实也说不上想办法,因为操作系统已经将这种机制准备好了:mutex(互斥量)

互斥量实例(QT环境)

执行结果

今天换个顺序,先看执行结果。

WT:<<<<WriteData:7<<<<
WT:int DataArray::aDDData(0)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[0] = 0;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(1)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[1] = 1;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(2)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[2] = 2;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(3)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[3] = 3;
WT:             m_dataSize++;
WT:     }
WT:}
WT:int DataArray::addData(4)
WT:{
WT:     if(m_dataSize < (ARRAY_SIZE - 1))
WT:     {
WT:             m_buffer[4] = 4;
WT:             m_dataSize++;
WT:     }
WT:}
RT:>>>>ReadData:8>>>>
RT:int DataArray::getDataSize()
RT:{
RT:     return 5;
RT:}
RT::----data_size=5
RT:int DataArray::getData(0)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[0]RT:   }
RT:}
RT:int DataArray::getData(1)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[1]RT:   }
RT:}
RT:int DataArray::getData(2)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[2]RT:   }
RT:}
RT:int DataArray::getData(3)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[3]RT:   }
RT:}
RT:int DataArray::getData(4)
RT:{
RT:     if(index >= 0 && index < m_dataSize)
RT:     {
RT:             return m_buffer[4]RT:   }
RT:}
RT:----total=10

可以很明显的看出:读和写之间没有任何交叉,当然这时的结果就是对的了。

代码

QT互斥量怎么实现

首先在46行创建QMutex对象。

CreatDataTask从48行到68行,是一个内嵌类。57行增加了一个引用类型的私有数据成员m_mutex。实际的对象是在73行调用51行的构造函数时传进来的。在62行访问数据之前调用lock方法,在65行访问数据结束后调用unlock方法。

读数据是在主函数中进行,它也是一个线程。同样地,访问数据之前调用lock方法,访问数据之后调用unlock方法。

“QT互斥量怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: QT互斥量怎么实现

本文链接: https://www.lsjlt.com/news/295505.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • QT互斥量怎么实现
    本篇内容介绍了“QT互斥量怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!访问同一数据的多个任务(线程)的代码随机交替执行,是任务(线...
    99+
    2023-06-19
  • Qt自定义Widget是怎么实现互斥效果
    这期内容当中小编将会给大家带来有关Qt自定义Widget是怎么实现互斥效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前沿什么叫做自定义Widget实现互斥效果呢?在使用Qt做一个界面美观性比较强的功能...
    99+
    2023-06-28
  • Qt自定义Widget实现互斥效果详解
    目录前沿功能实现知识点问题讲解知识点1讲解知识点2讲解知识点3总结前沿 什么叫做自定义Widget实现互斥效果呢? 在使用Qt做一个界面美观性比较强的功能时,可能会遇到这种问题:多个...
    99+
    2022-11-13
  • Qt利用QState状态机实现控件互斥操作详解
    目录功能讲解设置步骤1:设置btn1对应的状态信息2:设置btn2对应的状态信息3:设置btn3对应的状态信息4:设置停止状态5:数据绑定6:将所有的状态添加到状态机QStateMa...
    99+
    2022-12-08
    Qt QState状态机实现控件互斥操作 Qt 控件互斥操作 Qt QState状态机
  • Go 互斥锁和读写互斥锁的实现
    目录互斥锁读写互斥锁 先来看这样一段代码,所存在的问题: var wg sync.WaitGroup var x int64 func main() { wg.Add(2)...
    99+
    2022-11-12
  • C++11线程、互斥量及条件变量怎么创建
    这篇“C++11线程、互斥量及条件变量怎么创建”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++11线程、互斥量及条件变量...
    99+
    2023-07-05
  • vue+elementUI怎么实现点击按钮互斥效果
    这篇文章主要介绍“vue+elementUI怎么实现点击按钮互斥效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue+elementUI怎么实现点击按钮互斥效果”文章能帮助大家解决问题。先看看实...
    99+
    2023-06-30
  • Linux互斥锁的实现原理是什么
    本篇内容主要讲解“Linux互斥锁的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux互斥锁的实现原理是什么”吧!互斥锁(Mutex)是在原子操作API的基础上实现的信号量行...
    99+
    2023-06-28
  • QT与javascript交互数据的实现
    一、数据从QT流向JS 1、QT调用JS的函数,JS通过形参获得QT的值 2、JS调用QT的函数,QT函数的返回值进入JS 二、数据从JS流向QT 1、JS调用QT的函数,QT通过形...
    99+
    2022-11-12
  • c++11线程为什么需要互斥量
    这篇文章给大家分享的是有关c++11线程为什么需要互斥量的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为什么需要互斥量在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里...
    99+
    2023-06-15
  • windows中信号量和互斥量的区别是什么
    本篇内容介绍了“windows中信号量和互斥量的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、互斥量用于线程的互斥,信号...
    99+
    2023-06-25
  • GolangMutex实现互斥的具体方法
    目录获取锁未锁——直接获取在不饥饿且旋的不多的情况下,尝试自旋自旋究竟在做什么呢?计算期望状态尝试达成获取锁期望考虑几种场景释放锁只有已锁—&md...
    99+
    2023-05-17
    Golang Mutex互斥 Golang Mutex
  • 怎么在java中实现多线程的互斥与同步
    这篇文章将为大家详细讲解有关怎么在java中实现多线程的互斥与同步,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、线程互斥与同步互斥:指的是多个线程不能同时访问共享变量同步:指的是多个线程...
    99+
    2023-06-15
  • qt多线程处理大量数据怎么实现
    在Qt中,可以使用QThread来实现多线程处理大量数据。首先,创建一个继承自QThread的自定义线程类,重写其run()函数,将...
    99+
    2023-10-18
    qt
  • QT与javascript交互数据如何实现
    这篇文章给大家分享的是有关QT与javascript交互数据如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数据从QT流向JS1、QT调用JS的函数,JS通过形参获得QT的值2、JS调用QT的函数,QT...
    99+
    2023-06-15
  • Qt编写地图怎么实现海量点位标注
    这篇文章将为大家详细讲解有关Qt编写地图怎么实现海量点位标注,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、前言海量点位标注的出现,是为了解决普通设备点超过几百个性能极速降低的问题,普通的...
    99+
    2023-06-29
  • C++互斥量、lock_guard类模板及死锁实例分析
    这篇文章主要介绍“C++互斥量、lock_guard类模板及死锁实例分析”,在日常操作中,相信很多人在C++互斥量、lock_guard类模板及死锁实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++...
    99+
    2023-07-02
  • QT中QByteArray与char、int、float之间的互相转化怎么实现
    这篇文章主要介绍了QT中QByteArray与char、int、float之间的互相转化怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇QT中QByteArray与char、int、float之间的互相转...
    99+
    2023-06-30
  • python互斥锁问题怎么解决
    在Python中,可以使用互斥锁(Lock)来解决互斥访问问题。互斥锁是一种线程同步的机制,它可以保证在同一时刻只有一个线程能够访问...
    99+
    2023-10-23
    python
  • Qt怎么实现http服务
    本篇内容介绍了“Qt怎么实现http服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先看执行结果:Qt HttpServer左边是开启的Q...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作