成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

信號量

OldPanda / 1153人閱讀

摘要:對于信號量,可以認(rèn)為是一個(gè)倉庫,有兩個(gè)概念,容量和當(dāng)前的貨物個(gè)數(shù)。創(chuàng)建信號量,設(shè)置容量,先有操作,才能操作。構(gòu)造函數(shù)需要指定信號量的容量,可選指定是否公平,以防止低優(yōu)先級線程的饑餓狀態(tài)。

信號量是操作系統(tǒng)提供給用戶使用的一種機(jī)制,幫助用戶進(jìn)程協(xié)調(diào)使用資源,用戶編程的時(shí)候可以直接調(diào)用,不必自己設(shè)計(jì)。計(jì)算機(jī)對信號量只能執(zhí)行 wait和signal這兩種原子(sychronized)操作,即申請和釋放信號量時(shí)無法被打斷。

信號量多用于進(jìn)程間的同步與互斥,簡單的說一下同步和互斥的意思

同步:指散步在不同任務(wù)之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的某種先后次序來運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。

互斥:不同任務(wù)之間的若干程序片斷,當(dāng)某個(gè)任務(wù)運(yùn)行其中一個(gè)程序片段時(shí),其它任務(wù)就不能運(yùn)行它們之中的任一程序片段,只能等到該任務(wù)運(yùn)行完這個(gè)程序片段后才可以運(yùn)行

競爭:當(dāng)并發(fā)進(jìn)程競爭使用同一個(gè)資源的時(shí)候,我們就稱為競爭進(jìn)程

顯然同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步。也就是說互斥是兩個(gè)任務(wù)之間不可以同時(shí)運(yùn)行,他們會相互排斥,必須等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同步也是不能同時(shí)運(yùn)行,但他是必須要安照某種次序來運(yùn)行相應(yīng)的線程(也是一種互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任務(wù)的運(yùn)行順序,即任務(wù)是無序的,而同步的任務(wù)之間則有順序關(guān)系。

對于信號量,可以認(rèn)為是一個(gè)倉庫,有兩個(gè)概念,容量和當(dāng)前的貨物個(gè)數(shù)。
P操作從倉庫拿貨,如果倉庫中沒有貨(if(signal==0)),線程一直等待(wait),直到V操作,往倉庫里添加了貨物,然后從倉庫拿貨(--signal)為了避免P操作一直等待下去,會有一個(gè)超時(shí)時(shí)間。

V操作,如果倉庫滿了(if(signal==bound)),線程等待(wait),直到有P操作,從倉庫中拿走貨物,有空的位置,往倉庫送貨(++signal)。

創(chuàng)建信號量,設(shè)置容量,先有V操作,才能P操作。
P操作:貨物個(gè)數(shù)減1,減過之后,貨物個(gè)數(shù)大于等于0,說明已經(jīng)拿到貨物,線程繼續(xù)。否者線程阻塞。

V操作:貨物個(gè)數(shù)加1,加過之后,貨物個(gè)數(shù)小于等于容量,說明添加成功,線程繼續(xù)。否者線程阻塞。

JDK1.5已經(jīng)實(shí)現(xiàn)了Semaphore類,無須再自己實(shí)現(xiàn)。
構(gòu)造函數(shù)需要指定信號量的容量,可選指定是否公平,以防止低優(yōu)先級線程的饑餓狀態(tài)。
Semaphore(int permits) 創(chuàng)建具有給定的許可數(shù)和非公平的公平設(shè)置的 Semaphore。
Semaphore(int permits, boolean fair) 創(chuàng)建具有給定的許可數(shù)和給定的公平設(shè)置的 Semaphore。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68634.html

相關(guān)文章

  • Python線程專題5:號量與有邊界的號量

    摘要:有邊界的信號量語法創(chuàng)建一個(gè)新的有邊界信號量。是計(jì)數(shù)器的初始值,如果忽略,將默認(rèn)為信號量與有邊界的信號量的區(qū)別的工作方式與完全相同,但操作的次數(shù)不能超過的操作次數(shù)。信號量與互斥鎖的微妙差別信號量可用于發(fā)送信號。 上一篇文章:Python線程專題4:Timer對象、Lock對象、Rlock對象下一篇文章:Python線程專題6:事件 信號量與有邊界的信號量 信號量是一個(gè)基于計(jì)數(shù)器的同步原...

    Dionysus_go 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<