35.QT-多线程

程序和进程的关系

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


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/lifexy/p/9427699.html

posted @ 2018-09-20 12:24  康永年  阅读(297)  评论(0)    收藏  举报
友情链接:回力 | 中老年女装 | 英语口语培训 | 托福培训 | 雅思周末班