Threaded::synchronized
(PECL pthreads >= 2.0.0)
Threaded::synchronized — Synchronization
Description
Executes the block while retaining the referenced objects synchronization lock for the calling context
Parameters
-
block
-
The block of code to execute
-
...
-
Variable length list of arguments to use as function arguments to the block
Return Values
The return value from the block
Examples
Example #1 Synchronizing
<?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());
?>
The above example will output:
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
Коментарии
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.