国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

信號量

OldPanda / 1148人閱讀

摘要:對于信號量,可以認為是一個倉庫,有兩個概念,容量和當前的貨物個數。創建信號量,設置容量,先有操作,才能操作。構造函數需要指定信號量的容量,可選指定是否公平,以防止低優先級線程的饑餓狀態。

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

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

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

互斥:不同任務之間的若干程序片斷,當某個任務運行其中一個程序片段時,其它任務就不能運行它們之中的任一程序片段,只能等到該任務運行完這個程序片段后才可以運行

競爭:當并發進程競爭使用同一個資源的時候,我們就稱為競爭進程

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

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

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

創建信號量,設置容量,先有V操作,才能P操作。
P操作:貨物個數減1,減過之后,貨物個數大于等于0,說明已經拿到貨物,線程繼續。否者線程阻塞。

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

JDK1.5已經實現了Semaphore類,無須再自己實現。
構造函數需要指定信號量的容量,可選指定是否公平,以防止低優先級線程的饑餓狀態。
Semaphore(int permits) 創建具有給定的許可數和非公平的公平設置的 Semaphore。
Semaphore(int permits, boolean fair) 創建具有給定的許可數和給定的公平設置的 Semaphore。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68634.html

相關文章

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

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

    Dionysus_go 評論0 收藏0

發表評論

0條評論

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