Threaded::lock
(PECL pthreads >= 2.0.0)
Threaded::lock — Synchronization
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)
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для управления процессами программ
- pthreads
- Функция Threaded::chunk() - Manipulation
- Функция Threaded::count() - Manipulation
- Threaded::extend
- Threaded::from
- Функция Threaded::getTerminationInfo() - Error Detection
- Функция Threaded::isRunning() - State Detection
- Функция Threaded::isTerminated() - State Detection
- Функция Threaded::isWaiting() - State Detection
- Функция Threaded::lock() - Synchronization
- Функция Threaded::merge() - Manipulation
- Функция Threaded::notify() - Synchronization
- Функция Threaded::pop() - Manipulation
- Функция Threaded::run() - Execution
- Функция Threaded::shift() - Manipulation
- Функция Threaded::synchronized() - Synchronization
- Функция Threaded::unlock() - Synchronization
- Функция Threaded::wait() - Synchronization
Коментарии
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 T 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();
}
}