日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 信号量 QSemaphore Class 的翻译

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 信号量 QSemaphore Class 的翻译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于 Qt QSemaphore class 的翻譯

Qt 的 QSemaphore class 提供了一個通用的信號量(可以是單一的,也可以是數量多個的)的使用方法。

需要編輯環境添加:

Header: #include <QSemaphore> qmake: QT += core

公共函數:

QSemaphore(int n = 0) ~QSemaphore() void acquire(int n = 1) int available() const void release(int n = 1) bool tryAcquire(int n = 1) bool tryAcquire(int n, int timeout)

一些細節的描述:
1、信號量本質上是一個互斥鎖(mutex),但是又有區別。
互斥鎖只能鎖一次,然而信號量可以多次。
打個比方,在早餐餐廳,大家要喝咖啡。如果用Mutex的方式,同時只有一個人可以使用咖啡機,他獲得了咖啡機的使用權后,開始做咖啡,其他人只能在旁邊等著,直到他做好咖啡后,另外一個人才能獲得咖啡機的使用權。

如果用Semaphore的模式,服務員會把咖啡做好放到柜臺上,誰想喝咖啡就拿走一杯,服務員會不斷做咖啡,如果咖啡杯被拿光了,想喝咖啡的人就排隊等著。

2、信號量典型的應用是在某些共享的資源上。

3、信號量支持兩個基本的操作acquire() and release():

  • acquire(n) :嘗試獲取n個資源,如果這些n個資源尚不可用,那么線程會一直阻塞直到資源可用為止。
  • release(n):釋放n個資源
  • tryAcquire() 會立即返回資源是否可用
  • available() 會返回當前有多少資源可用

例如:

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

一個典型的關于信號量的應用,是共享環形緩存(循環隊列)的使用,具體可以查看示例Semaphores Example。

打個比方,去餐廳就餐。信號量初始為餐廳的座位數,如果客人來了,想就餐。于是一位一位入座,剩余的座位就少了,available()返回的值就減少了。如果客離開了,那剩余的座位就多了,available()返回的值就增多了。那樣就可以接待更多的客人了。
如果來了10個客人,而座位只有9個,那么這10個人需要等待。
但是具體處理時這樣的:如果當時有5個座位空余,那么這10人中5人可以入座,剩余4人繼續等待。

成員函數介紹:
QSemaphore::QSemaphore(int n = 0)
構建一個新的信號量,初始化資源數(類似上面提到的座位號)為0。

QSemaphore::~QSemaphore()
銷毀信號量

void QSemaphore::acquire(int n = 1)
獲取n個資源,默認為1,如果n>available(),線程將阻塞,一直等到足夠的資源為止。

int QSemaphore::available() const
返回當前可用的資源

void QSemaphore::release(int n = 1)
釋放n個資源,默認資源數為1
該函數還可以自動構建資源片

例如:

QSemaphore sem(5); // a semaphore that guards 5 resources sem.acquire(5); // acquire all 5 resources sem.release(5); // release the 5 resources sem.release(10); // "create" 10 new resources

bool QSemaphore::tryAcquire(int n = 1)
嘗試獲取n個資源

例如:

QSemaphore sem(5); // sem.available() == 5 sem.tryAcquire(250); // sem.available() == 5, returns false sem.tryAcquire(3); // sem.available() == 2, returns true

bool QSemaphore::tryAcquire(int n, int timeout)
嘗試獲取n個資源,超時時間為timeout

例如:

QSemaphore sem(5); // sem.available() == 5 sem.tryAcquire(250, 1000); // sem.available() == 5, waits 1000 milliseconds and returns false sem.tryAcquire(3, 30000); // sem.available() == 2, returns true without waiting

Qt 中關于信號量的介紹就這些,本篇翻譯結束。

總結

以上是生活随笔為你收集整理的Qt 信号量 QSemaphore Class 的翻译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费在线h | 高清一区二区视频 | 美女av免费 | 国产精品27p | 色哟哟在线视频 | 九色亚洲 | 日韩午夜免费视频 | 女人16一毛片 | 男女aa视频 | 免费吸乳羞羞网站视频 | 美女在线观看www | 污污网站在线 | 久久成人福利视频 | 秋霞自拍 | 国产成人精品一区二区三区在线 | 香蕉视频在线网址 | 国产男男gay网站 | 亚洲乱码国产乱码精品精的特点 | 国产欧美激情在线观看 | 亚州黄色 | 色亭亭 | 欧美人与动性xxxxx杂性 | 国产在线视频导航 | 在线视频污 | 一级片免费观看视频 | 五月天激情丁香 | 91视频xxx | 欧美精品一区二区三区三州 | 97精品人妻一区二区三区香蕉 | 伊人三区| 久久女同互慰一区二区三区 | 粗大黑人巨茎大战欧美成人免费看 | 亚洲精品国产精品国自产 | 91精品一区二区三区四区 | 福利小视频 | 免费毛片播放 | 久久久国产视频 | 狠狠干青青草 | 久久av在线播放 | 欧美色精品 | 你懂的日韩 | jizz欧美大片 | 人人妻人人澡人人爽人人精品 | 荔枝视频污 | 999视频在线观看 | 免费成人黄色 | 嫩草视频在线观看 | 国产在线精品二区 | 日韩狠狠| 黄色天堂| r级无码视频在线观看 | 影音先锋成人资源网 | 国产主播在线一区 | 亚洲精品乱码久久久久久麻豆不卡 | 欧美成人激情视频 | 在线欧美视频 | 欧美一级在线观看视频 | 欧美啊v | 国产在线免费视频 | 中文字幕中文在线 | 日韩成人免费视频 | 精品一区二区在线免费观看 | www.com捏胸挤出奶 | 三级国产在线观看 | 亚洲欧洲日韩av | 国产一二三区在线视频 | 在线观看亚洲一区 | 青青草原在线免费 | 亚洲成a人片77777精品 | 黄色片毛片 | 日韩激情中文字幕 | 欧美日韩www| 免费黄色三级 | 金瓶风月在线 | 中文字幕精品一二三四五六七八 | 国产精品热 | 免费三级网 | 国产自精品 | a天堂在线观看视频 | 国模大胆一区二区三区 | 欧美日韩亚洲国产综合 | 午夜一区二区三区 | 一区二区三区四区日韩 | 亚洲av第一成肉网 | 九九视频国产 | 欧美用舌头去添高潮 | 美女写真福利视频 | 精品欧美日韩 | 日干夜操| 国产精品www在线观看 | 青春草视频在线免费观看 | 午夜视频网站在线观看 | free性丰满69性欧美 | 成人国产精品蜜柚视频 | 97超碰在线免费 | 一起草视频在线播放 | 日韩欧美在线观看一区二区三区 | 国产精品一二三四五 | 久久影音 |