請查閱我對信號量的理解!CMU:信號燈
我明白計算信號量和二進制信號量的想法。然而,使用signal()和wait()實現的自旋鎖和信號量之間的區別與我融合在一起。
例如,自旋鎖基本上有兩個值(鎖定或解鎖的二進制真/假)。因此,自旋鎖基本上是一個二進制信號量,是正確的嗎?
當另一個進程處於內部時,任何嘗試進入關鍵部分的進程都將無法鎖定,並且會旋轉並持續檢查鎖定狀態,直至其解鎖,然後才能進入並鎖定它。
使用signal()和wait()函數的信號量本質上是從某種變量中加或減一個值。關鍵部分有一個限制。只有當變量具有某種價值時纔會打開它。消費者進程的一個示例實現將是wait(full),然後當它完成時執行,並在結束時發信號(空)。而生產者進程可能會等待(空),並在空時爲真時執行,然後當完成時它會發出信號(滿)。
wait()和基本上在循環中「等待」的自旋鎖之間有什麼區別?
1,因爲我經常會混淆這些概念我自己。 – teukkam 2010-09-06 06:31:29
謝謝,這真的是一個複雜的話題。我讀了很多,感覺就像我讀得越多,我就越困惑。 – 2010-09-06 07:03:37