PHP Conference Japan 2024

sem_release

(PHP 4, PHP 5, PHP 7, PHP 8)

sem_release釋放信號量

說明

sem_release(SysvSemaphore $semaphore): bool

如果信號量目前被呼叫程序取得,sem_release() 會釋放該信號量,否則會產生警告。

釋放信號量後,可以呼叫 sem_acquire() 重新取得它。

參數

semaphore

sem_get() 返回的信號量。

返回值

成功時返回 true,失敗時返回 false

更新日誌

版本 說明
8.0.0 semaphore 現在需要一個 SysvSemaphore 實例;以前需要的是 resource

參見

新增筆記

使用者貢獻的筆記 2 則筆記

danno at circumsolutions dot com
23 年前
如果您想實現這種信號標存取方式(如果進行 ipc,通常需要這種方式),您可以做的一件事是建立共享記憶體,它只是一個整數。在行程之間使用此整數作為信號標的值。您可以編寫使用此功能的包裝函式,以允許您執行所需的讀寫器操作,或者直接使用共享記憶體。在這種情況下,我不太擔心競爭條件,因為共享記憶體只是一個整數。如果您擔心競爭條件,用於執行信號標操作的包裝函式實際上可以使用信號標來消除任何競爭條件。此外,這樣做的一個額外好處是您可以檢查整數的值。
apua at communiplex dot com
24 年前
sem_release 僅在信號標當前由呼叫行程獲取時才釋放信號標,這實際上是一個設計缺陷,因為有時(例如在讀寫器實現中)需要釋放由另一個行程獲取的信號標。在 C 語言中,您可以這樣做。
我之所以這樣說是因為我試圖用 php3 編寫一個由兩個程式組成的聊天應用程式:一個監聽器和一個發言器。發言器釋放一個信號標,以通知共享記憶體變數中有一條新訊息。監聽器在輸出訊息之前會等待該信號標。
To Top