Threaded::lock

(PECL pthreads >= 2.0.0)

Threaded::lockSynchronization

Description

public boolean Threaded::lock ( void )

Lock the referenced objects property table

Parameters

This function has no parameters.

Return Values

A boolean indication of success

Examples

Example #1 Locking Object Properties

<?php
class My extends Thread {
    public function 
run() {
        
var_dump($this->lock());
        
/** nobody can read or write **/
        
var_dump($this->unlock());
        
/** reading / writing resumed for all other contexts */
    
}
}
$my = new My();
$my->start();
?>

The above example will output:

bool(true)
bool(true)

Коментарии

index.php
<?php
if (class_exists "Entity\My" )) {
   
$my = new EntityMy 200 );
}
if (
class_exists "Entity\T" )) {
    for(
$i 0$i 3$i ++) {
       
$t [] = new EntityT $my );
    }
}
foreach (
$t as $item){
   
$item->start();
}
t.class.php
<?php
class extends Thread{
    private 
$my;
    public function 
__construct($my){
       
$this->my $my;
    }
    public function 
run(){
       
$this->my->draw("120");
    }
}
my.class.php
<?php
class My extends Thread{
    private 
$balance;
    public function 
__construct($balance){
       
$this->balance $balance;
    }
    public function 
draw($cost){
       
$this->lock();
        if(
$this->balance >= $cost){
           
usleep(500);
           
$this->balance -= $cost;
            echo 
Thread::getCurrentThreadId() . "__get__${cost},now the balance is:{$this->balance}<br/>"
        }
        else 
            echo 
Thread::getCurrentThreadId() . "__get fail__,now the balance is :{$this->balance}<br/>";
       
$this->unlock();
    }
}
2015-12-18 18:24:16
http://php5.kiev.ua/manual/ru/threaded.lock.html

    Поддержать сайт на родительском проекте КГБ