- PHP 手册
- 函数参考
- 进程控制扩展
- pthreads
- Threaded
Threaded::lock
(PECL pthreads < 3.0.0)
Threaded::lock — 同步控制
Warningpthreads v3 中已移除此方法。 请使用 Threaded::synchronized() 方法。
说明
public Threaded::lock ( void ) : bool给对象属性表加锁
参数
此函数没有参数。
返回值
布尔值,表示加锁是否成功
范例
Example #1 给对象属性加锁
<?php
class My extends Thread {
public function run() {
var_dump($this->lock());
/** 其他线程无法进行读/写操作 **/
var_dump($this->unlock());
/** 其他线程可以进行读/写操作 */
}
}
$my = new My();
$my->start();
?>
以上例程会输出:
bool(true) bool(true)
User Contributed Notes 1 note
up down 1 312036773 at qq dot com ¶3 years ago
index.php
<?php
if (class_exists ( "Entity\My" )) {
$my = new Entity\My ( 200 );
}
if (class_exists ( "Entity\T" )) {
for($i = 0; $i < 3; $i ++) {
$t [] = new Entity\T ( $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();
}
}
add a note
官方地址:https://www.php.net/manual/en/threaded.lock.php