QSystemSemaphore 系統級訊號量

2021-07-30 12:04:57 字數 910 閱讀 9243

在之前的一篇文章中,我們講過了qsemaphore類,其可以用於同步多執行緒。而今天要講到的這個類,根據名字就可以猜測到,其可以在整個系統中使用,即它既可以用於多執行緒,也可以用於多執行緒。當然,這也意味著,qsystemsemaphore類是乙個比較重量級的類,所以,除非在同步多程序的情況下,否則不應該使用該類。其他方面,該類和qsemaphore均相同,操作也相同。

我們先來看一下該類的建構函式:

qsystemsemaphore::qsystemsemaphore(const qstring &key, int initialvalue = 0, accessmode mode = open)
可見,其和qsemaphore相比,多了乙個key,也可以理解為該訊號量的名字,多個程序間就是通過這個名字來操作同乙個訊號量的。另外還多了乙個mode引數,該引數可以取兩個值open和create。其中,open在請求的訊號量已存在時,就使用它,並且不會重置訊號的資源數,如果請求的訊號量不存在,就 建立它並為它設定初始的資源值。而對於create來說,不管請求的訊號量是否已存在,它都會取得訊號量的擁有權,並設定初始值。所以,我們應該在第一次建立訊號量時,為其傳入create引數。但在windows平台上,create和open的行為相同,因為,windows平台上不存在應用程式崩潰後,訊號量還存在的情況。

下面,我們寫兩個應用程式來使用一下系統級的訊號量。

新建兩個qt控制台程式systemsem1和systemsem2,**如下:

systemsem1:

return a.exec();

}systemsem2:

return a.exec();

}我們在systemsem1中建立訊號量,在systemsem2中開啟訊號量。

啟動這兩個程式,可以看到,每隔1秒,兩個程式會交替輸出各自的程序id。

訊號與系統

匆忙整理,凌亂不堪。待補。的函式 功率訊號,週期平均的內積 r12 f1 t f2 t dt 延遲 比例 疊加 相乘sa t sinc t sin t t 是能量訊號 平方可積 不穩定系統 不絕對可積 週期訊號均可被表示為各種簡諧波的加權和 非週期訊號均可用簡諧波訊號的加權積分表示。週期訊號f t ...

訊號槽系統

訊號槽 乙個物件 sender 上由於某件事情的發生而廣播乙個訊號 signal 通過connect函式進行連線,另乙個物件 receiver 可以接收這個訊號並呼叫乙個槽函式 slot 作為響應。connect函式的基本形式 qobjectconnect sender,signal,receive...

Linux系統 訊號

訊號的基本概念 為了理解訊號,先從我們最熟悉的場景說起。使用者輸入命令,在shell下啟動乙個前台程序。使用者按下ctrl c,這個鍵盤輸入產生乙個硬體中斷。如果cpu當前正在執行這個程序的 則該程序的使用者空間 暫停執行,cpu從使用者態切換到核心態處理硬體中斷。中斷驅動程式將ctrl c解釋成乙...