PHP Conference Japan 2024

Threaded::synchronized

(PECL pthreads >= 2.0.0)

Threaded::synchronized同步化

說明

public Threaded::synchronized(Closure $block, mixed ...$args): mixed

針對呼叫上下文,在保留參考物件的同步鎖定的同時執行程式碼區塊。

參數

block

要執行的程式碼區塊

args

要用作區塊函式引數的可變長度引數清單

回傳值

程式碼區塊的回傳值

範例

範例 #1 同步化

<?php
class My extends Thread {
public function
run() {
$this->synchronized(function($thread){
if (!
$thread->done)
$thread->wait();
},
$this);
}
}
$my = new My();
$my->start();
$my->synchronized(function($thread){
$thread->done = true;
$thread->notify();
},
$my);
var_dump($my->join());
?>

上述範例會輸出

bool(true)

新增註解

使用者貢獻的註解 1 則註解

john dot wellesz at teaser dot fr
10 年前
Threaded::synchronized() 允許您安全地設定或讀取同步條件,並根據這些條件採取行動(使用 ::wait() 和 ::notify()),因為您知道在特定時間只能執行一次對參考物件的 synchronized() 呼叫,來自不同執行緒環境的其他呼叫將會阻塞,直到 ::Synchronized() 閉包內呼叫 ::wait() 清除路徑為止。
To Top