首页 > 其他分享 >qt QSemaphore

qt QSemaphore

时间:2023-03-28 18:03:13浏览次数:28  
标签:available qt int 信号量 sem QSemaphore 资源

QSemaphore: 一个通用的可计数的信号量,信号量实际上就是广义的互斥量。一个互斥量只能被锁定一次,然而一个信号量可以被获取多次。信号量常被用于保护一定数目的同类资源。

基本操作:

QSemaphore::QSemaphore ( int n = 0 ) : 新建一个信号量,守护的资源数为n(默认为0)

QSemaphore::~QSemaphore ():销毁信号量警告:销毁一个正在使用的信号量将导致一个不确定的行为

int QSemaphore::available() const :用于返回可用资源的数目

void QSemaphore::acquire ( int n = 1 ):从该信号量守护的资源中获取n个资源。如果获取的资源数目大于available()返回值,那么自己将阻塞,直到可获取足够的资源数

void QSemaphore::release ( int n = 1 ):释放n个信号量守护的资源给信号量。该函数也可以用来增加一个信号量可使用的资源数目

bool QSemaphore::tryAcquire ( int n = 1 ):尝试从信号量守护的资源中获取n个资源。成功,则返回true。如果当前可用的资源数目不够立即返回,返回值为false,并且不占用任何资源

bool QSemaphore::tryAcquire ( int n, int timeout ):尝试从信号量守护的资源中获取n个资源。成功,则返回true。如果当前可用的资源数目available()不够,将等待timeout微秒。

例子:

QSemaphore sem(5); // sem.available() == 5
sem.acquire(3); // sem.available() == 2
sem.acquire(2); // sem.available() == 0
sem.release(5); // sem.available() == 5
sem.release(5); // sem.available() == 10
sem.tryAcquire(1); // sem.available() == 9, returns true
sem.tryAcquire(250); // sem.available() == 9, returns false

 

标签:available,qt,int,信号量,sem,QSemaphore,资源
From: https://www.cnblogs.com/fxw1/p/17266153.html

相关文章

  • Qt Json的使用教程
    前言从Qt5.0就开始提供处理Json数据的操作支持,JSON是一种对源自Javascript的对象数据进行编码的格式,但现在广泛用作互联网上的数据交换格式,Qt中的JSON支持提供了......
  • QT中将float数转换为QString类型
    概述直接上代码,下面是示例:示例一floatup=23.45;QStringstr=QString::number(up,'f',2);12示例二floatup=23.45;QStringstr=QString::asprintf(......
  • Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡
    Qt编写的CAN通信调试工具源代码支持吉阳光电CAN盒和致远周立功USB转CAN卡,带多线程接收可完成标准和扩展CAN帧YID发送和接收,带配置参数自动保存,定时发送,帧类型选择,文本和十......
  • Qt设置启动页面
     #include<QSplashScreen>QPixmappixmap(":/Resources/login.png");QSplashScreensplash(pixmap);splash.show();//设置显示信息splash.showMessage("程序初......
  • QT | 第一个QT程序
    1.新建工程1.1.打开QtCreator4.3.0(Community);1.2.然后点击:文件(F)---》新建文件或项目1.3.选择一个目录,如“E:\QtDemo”,再设置项目名称为Demo,这样新建项目后,会在“E:\Qt......
  • Qt 6.5快速安装(Windows)
     前言本文仅适用于初学者参考!!!如有错误和疑问请指出安装步骤1.进入  Indexof/qt/archive/online_installers/|清华大学开源软件镜像站|TsinghuaOpenSource......
  • Qt音视频开发30-qmedia内核qt4方案phonon播放(支持视频流)
    一、前言在Qt4中如果需要播放视频,一般用phonon多媒体框架,这应该就是Qt5/Qt6中多媒体框架的前身(查阅qmultimedia模块的相关代码可以发现架构几乎雷同,除了部分命名变了以外),p......
  • Qt 利用Fiddler提高安装速度
    我要安装的环境是vs2019+qt5。安装完vs2019后,直接安装qt5发现非常慢。网上搜了下,要用Fiddler,但安装过程中还是有问题,后通过来回切换代理解决问题,记录如下:国内有几个大......
  • VS2019安装配置Qt插件(qt-vsaddin)
    1、介绍Windows的Qt开发,一般采用VisualStudio安装Qt插件的方法开发Qt程序,毕竟VS开发工具还是比QtCreator开发工具强大、好用的多。本教程采用VS2019安装配置Qt插......
  • 【Visual Leak Detector】QT 中 VLD 输出解析(三)
    说明使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。目录说明1.使用方式2.有三处内存泄漏时的输出报告3.有两处内存泄漏时的输出报告1.使用方式在QT中使......