©
This document uses PHP Chinese website manual Release
(PECL pthreads >= 2.0.0)
Threaded::synchronized — Synchronization
$block
[, mixed $...
] )在发起调用的线程上下文中获取对象同步锁,然后同步执行代码块
block
要执行的代码块
...
传送给代码块的不定长参数
代码块的返回值
Example #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 [2014-03-19 13:22:13]
Threaded::synchronized() allows you to safely set or read synchronization conditions and act upon them (using ::wait() and ::notify()) knowing that only one call to synchronized() on the referenced object can be executed at a particular time, other calls from different thread contexts will block until the path is cleared by a call to ::wait() inside your ::Synchronized() closure.