色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 信號量是什么,大神全方位交給你

信號量是什么,大神全方位交給你 時間:2018-04-19      來源:未知

一.首先我們必須知道什么是信號量

信號量的本質是數據操作鎖,它本身不具備數據交換功能,而只是用于保護進程線程之間共享的資源,實現對共享資源的同步與互斥操作。

信號量相當于一把鎖,例如小黑上廁所,需要檢查是否有鎖,有鎖獲取鎖,占用廁所坑位資源,其他人無法進此坑位,當小黑上完廁所,需要釋放鎖,其他人都可以獲取鎖。

小黑 ------》 進程

門鎖 --------》 信號量

坑位 ------》 共享資源(信號量保護對象)

二.為什么要使用信號量

為了防止出現因多個程序同時訪問一個共享資源而引發的一系列問題,我們需要一種方法,在任一時刻只能有一個執行進程訪問代碼的臨界區域;臨界區域是指執行數據更新的代碼需獨占式地執行。而信號量就可以提供這樣的一種訪問機制,讓一個臨界區同一時間只有一個進程在訪問它,也就是說信號量是用來調協進程對共享資源的訪問的。其中共享內存的使用就要用到信號量。

臨界資源:一次只允許一個進程(一個線程)使用的資源叫做臨界資源。

臨界區:訪問臨界資源的代碼稱為臨界區。

三.信號量分類:

1.System V信號燈(IPC對象),也叫經典ipc對象,一般用于進程通信。

2.posix基于內存的信號燈(無名信號燈),一般線程通信。

功能分類:

1.二值信號量:信號量的值為0或1。與互斥鎖類似,資源可用時值為1,不可用時值為0。

2.計數信號量:值在0到n之間。用來統計資源,其值代表可用資源數。

注意:system v信號量對象不是一個信號量,是一個或者多個信號量的集合。對應內核中一個結構體:struct semid_ds 有一個成員sem_base指向第0個信號量結構體起始地址。

四.System v信號量實現步驟

-----》1、創建信號量對象

int semget(key_t key, int nsems, int semflg);

Key:創建信號量對象的唯一鍵值

nsems表示的就是創建的信號量集中信號量的個數

Semflg: 權限 IPC_CREAT:存在則打開,否則創建; IPC_CREAT | IPC_EXCL存在則出錯返回,否則創建,這 樣保證了 打開的是一個全新的信號量集

成功:信號量集ID 失敗-1

----》2.初始化具體信號量的值。

int semctl(int semid, int semnum, int cmd, union set);

semid:信號燈集ID

semnum: 要修改的信號燈編號

Cmd: GETVAL:獲取信號燈的值

SETVAL:設置信號燈的值

IPC_RMID:從系統中刪除信號燈集合

-----》3.執行p操作:獲取資源,信號量值減1不阻塞,可以操作資源;如果無資源可用,信號量值為0,阻塞等待資源。

int semop(int semid, struct sembuf *sops, unsigned nsops);

semid:信號量集ID

struct sembuf {

short sem_num; // 要操作的信號燈的編號

short sem_op; // 0 : 等待,直到信號燈的值變成0

// 1 : 釋放資源,V操作

// -1 : 分配資源,P操作

short sem_flg; // 0, IPC_NOWAIT, SEM_UNDO

};

nops: 要操作的信號燈的個數

----》 操作資源: 共享內存

-----》4.執行v操作:釋放資源,信號量值加1.

int semop(int semid, struct sembuf *sops, unsigned nsops);

-----》5.刪除對象

int semctl(int semid, int semnum, int cmd, ...);

上一篇:HDLC協議的特點及功能,讓你一看就會

下一篇:原碼、反碼、補碼之間怎么快速轉換,大神帶你輕松學

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 啊啊啊啊啊好爽视频 | 啪啪tv网站免费入口 | 日本熟妇无码色视频网站 | 奇米一区二区三区 | 久精品国产 | 久久免费看少妇高潮A片特黄多 | 无码人妻aⅴ一区二区三区鲁大师 | 丰满的少妇被猛烈进入白浆 | 久久AV老司机精品网站导航 | 人妻无码AV天堂二区网站 | 午夜一区二区国产好的精华液 | 亚洲av无码成人精品区天堂 | 亚洲av高清不卡在线播放 | 丰满少妇被猛烈进入流水 | 欧美牲交黑粗硬大 | 精品国产人妻一区二区三区 | 久青草资源视频在线无码 | 国产成人卡2卡3卡4乱码 | 樱桃视频大全免费观看 | 女人和拘做受大片免费看 | 五月天国产成人av免费观看 | 亚洲精品亚洲人成人网 | 日韩A片中文字幕视频免费 国产精品久久久久久久免费A片 | 日本50岁熟妇XXXX | 亚洲AV无码资源在线观看 | 亚洲AV无码不卡在线播放 | 久久久久影院色老大2020 | 国产成人久久综合777777麻豆 | 人妻夜夜爽天天爽三区 | 麻豆tv在线观看入口 | 亚洲国产人成自久久国产 | h成年动漫在线看网站 | yin荡护士揉捏乱p办公室视频 | 麻豆视频观看 | 四虎影院永久在线 | 中文字幕线观看 | 在线亚洲欧洲 | 国产精品黄在线观看免费软件 | 欧美日韩亚洲一区 | 米奇影视第四色 | 99热久久久无码国产精品性麻豆 |