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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

信号量(一) 基础知识

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信号量(一) 基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 信號量是1965荷蘭Dijkstra為了解決并發進程問題而提出的一個重要操作系統的思想

?????

????? 其基本思想:

????? 兩個或多個進程能夠通過簡單的信號進行合作,一個進程能夠被迫在某個位置停止,直到它接收到一個特定的信號。不論什么復雜的合作需求都能夠通過適當的信號結構得到滿足。為了發信號,須要使用一個稱為信號量的特殊變量。為通過信號量s發送信號,進程可運行原語semSignal(s),即V操作;為了通過信號量s接收信號,進程可運行原語semWait(s),即P操作;假設對應的信號還沒有發送,則進程將被掛起,直至發送位置

?

???? 信號量可被看做死一個具有整數型的變量,有三個操作:

1. 一個信號量能夠初始化成非負數,一般資源數就是信號量的初始值

2. semWait操作,即P操作,使得信號量減1,假設值變成負數(s?<0) 則運行semWait的進程被堵塞,否則進程繼續運行

3. semSignal操作,即V操作,使得信號量加1,假設值小于或等于零,則被semWait操作堵塞的進程被解除堵塞

?

?

P,V操作的偽代碼?:

#include<queue> using namespace std; struct semaphore{ int count; queueType queque; } void semWait(semaphore s){//P操作 s.count--; if(s.count<0){ place this process in s.queue; block this process; } } void semSignal(semaphore s){//V操作 s.count++; if(s.count<=0){ remove a process P from s.queque; place process P on ready list; } }

?

?

總結

以上是生活随笔為你收集整理的信号量(一) 基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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