博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
35.QT-多线程
阅读量:5101 次
发布时间:2019-06-13

本文共 641 字,大约阅读时间需要 2 分钟。

程序和进程的关系

  • 一个程序可能对应多个进程
  • 一个进程可能包含多个程序,比如一个程序依赖多个其它动态库时

QT中的多线程编程
QT中的线程是以对象的形式(继承于QThread类)存在的
其中QThread类常用成员函数有:

 

多线程示例

打印:

 

多线程-终止示例
在多线程里,一般都是自定义结束函数来结束进程,示例如下:

 

多线程的同步

多个线程执行时,有可能某个线程会需要等到另一个线程的结果才能执行,可以通wait()成员函数实现,等待另一个线程完成,如下图所示:

 

多线程的互斥QMutex
当一个全局的共有资源被多个线程同时调用时,则称该资源为临界资源,并且该资源需要使用QMutex互斥类,来保证线程间的互斥,避免同一时刻访问临界资源而出现意想不到的问题.
其中QMutex中关键成员函数如下:

示例:

如果有多个不同的临界资源时,比如: g_res1, g_res2, g_res3...g_resn

则对应的线程锁也同样需要分配相同序号: g_mutex1, g_mutex2, g_mute3...g_mutexn
注意:如果多个不同的临界资源只对应一个线程锁的话,则会降低并发效率

 

多线程的信号量QSemaphore

信号量是特殊的线程锁,内部通过一个资源值,来使得N个线程可以同时访问临界资源
其中QSemaphore中关键成员函数如下:

示例:

 


文章来源:

转载于:https://www.cnblogs.com/kangyongnian/p/9680112.html

你可能感兴趣的文章
mysql8.0.13下载与安装图文教程
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>
django之多表查询-2
查看>>