程序間同步 訊號量集

2021-08-21 19:45:26 字數 1290 閱讀 4441

一 、建立或者開啟訊號量

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 ...