訊號量
維基百科,自由的 encyclopedia
訊號量(英語:semaphore)又稱為訊號標,是一個同步對象,用於保持在0至指定最大值之間的一個計數值。當執行緒完成一次對該semaphore對象的等待(wait)時,該計數值減一;當執行緒完成一次對semaphore對象的釋放(release)時,計數值加一。當計數值為0,則執行緒等待該semaphore對象不再能成功直至該semaphore對象變成signaled狀態。semaphore對象的計數值大於0,為signaled狀態;計數值等於0,為nonsignaled狀態。
訊號量的概念是由荷蘭電腦科學家艾茲赫爾·戴克斯特拉(Edsger W. Dijkstra)發明的[1],廣泛的應用於不同的作業系統中。在系統中,給予每一個行程一個訊號量,代表每個行程目前的狀態,未得到控制權的行程會在特定地方被強迫停下來,等待可以繼續進行的訊號到來。如果訊號量是一個任意的整數,通常被稱為計數訊號量(Counting semaphore),或一般訊號量(general semaphore);如果訊號量只有二進位的0或1,稱為二進位訊號量(binary semaphore)。