一 、建立或者開啟訊號量
int semget(key_t key,
int nsems,//訊號量集中訊號量的個數
int flag);//開啟:0,建立:ipc_creat|0644
返回值:返回訊號量集的識別符號
檢視訊號量:
ipcs -s
具體案例:
#include
#include
#include
#include
#include
int main(void)
二、設定訊號量初值
semctl( int semid,//訊號量集的識別符號
int semnum,//訊號量集中的第幾個訊號量,訊號量集陣列的下標
int cmd,//setval
su);//訊號量初值
三、檢視訊號量的值
semctl( int semid,
int semnum,//訊號量集中的第幾個訊號量,訊號量集陣列的下標
int cmd,//getval
0);
返回值:當前訊號量的值
四、pv操作
semop(int semid,//訊號量識別符號
struct sembuf sb,//進行操作的訊號量的結構體陣列
int len); //進行操作訊號量的個數
返回值:返回訊號量集的識別符號
struct sembuf
p操作
void p(int
id)int main(void)
v操作:
void v(int
id)int main(void)
操作結果:
程序間同步之訊號量
概念 訊號量是乙個特殊的變數,程式對其訪問都是原子操作,且只允許對它進行等待 即p 訊號變數 和傳送 即v 訊號變數 資訊操作。最簡單的訊號量是只能取0和1的變數,這也是訊號量最常見的一種形式,叫做二進位制訊號量。而可以取多個正整數的訊號量被稱為通用訊號量。二值訊號量 訊號量的值只有0和 1,若資源...
程序間同步之訊號量(semaphore)
程序間同步之訊號量 semaphore 1.訊號量的建立與使用 linux下使用semget建立或開啟訊號量集,int semget key t key,int nsems,int sem 該函式執行成功則返回乙個訊號量集的識別符號,失敗返回 1。返回的引數key是由ftok得到的鍵值 第二個引數n...
linux程序間同步之POSIX訊號量
閱讀linux系統程式設計手冊筆記 posix訊號量跟system v訊號量一樣,都是用於程序和執行緒同步對同享資源的訪問。訊號量 posix,system v 是乙個整數,其值是不能小於0的。posix訊號量主要分為 命名訊號量 未命名訊號量。首先先介紹命名訊號量。先來看看命名訊號量的主要api ...