文字

Threaded::synchronized

(PECL pthreads >= 2.0.0)

Threaded::synchronizedSynchronization

说明

public mixed Threaded::synchronized ( Closure $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.

上一篇: 下一篇: