Qt系列文章之三十三 (基于QThread的信号量的线程同步)

Posted Fu_Lin_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt系列文章之三十三 (基于QThread的信号量的线程同步)相关的知识,希望对你有一定的参考价值。

系列大纲

前言

  本章将是QThread中最后一个有关同步的方法介绍了,可能很少有人会用到使用信号量,不过了解该机制也是不错的,下面看我的简单实例使用介绍。

信号量的原理

  信号量(Semaphore)是另一种限制对共享资源进行访问的线程同步机制,它与互斥量(Mutex)相似,但是有区别。一个互斥量只能被锁定一次,而信号量可以多次使用。信号量通常用来保护一定数量的相同的资源,如数据采集时的双缓冲区。

  QSemaphore 是实现信号量功能的类,它提供以下几个基本的函数:

  • acquire(int n) 尝试获得n个资源。如果没有这么多资源,线程将阻塞直到有n个资源可用;
  • release(int n) 释放n个资源,如果信号量的资源已全部可用之后再release(),就可以创建更
    多的资源,增加可用资源的个数;
  • int available() 返回当前信号量可用的资源个数,这个

以上是关于Qt系列文章之三十三 (基于QThread的信号量的线程同步)的主要内容,如果未能解决你的问题,请参考以下文章

Qt系列文章之三十一 (基于QThread互斥量的线程同步线程)

Qt系列文章之三十一 (基于QThread互斥量的线程同步线程)

Qt系列文章之三十(基于QThread的线程同步概述)

Qt系列文章之三十(基于QThread的线程同步概述)

Qt系列文章之三十二 (基于QThread的QReadWriteLock和QWaitCondition 的线程同步)

Qt系列文章之三十二 (基于QThread的QReadWriteLock和QWaitCondition 的线程同步)