函数名称:Threaded::notify()
适用版本:PHP 5 >= 5.3.0, PHP 7
函数描述:Threaded::notify()方法用于通知一个正在等待此对象上的线程。如果没有线程正在等待,则此方法不会产生任何效果。
用法:
public function Threaded::notify ( void ) : bool
参数说明:此函数没有参数。
返回值:如果成功通知了一个线程,则返回true,否则返回false。
示例:
<?php
class MyThread extends Thread {
public function run() {
echo "线程开始\n";
$this->synchronized(function($thread){
echo "线程等待\n";
$thread->wait();
echo "线程恢复\n";
}, $this);
echo "线程结束\n";
}
}
$thread = new MyThread();
$thread->start();
usleep(100000); // 等待100毫秒,确保线程已经开始执行
$thread->synchronized(function($thread){
echo "主线程通知\n";
$thread->notify();
}, $thread);
$thread->join();
?>
输出:
线程开始
线程等待
主线程通知
线程恢复
线程结束
注意事项:
- Threaded::notify()方法只能在使用synchronized()方法锁定的代码块中调用。
- 必须在等待线程的synchronized()代码块中调用Threaded::wait()方法来等待通知。
- 线程必须在等待通知之前开始执行,否则通知将无效。
- 线程通知的顺序无法保证,因此不应该依赖于特定的通知顺序。
- 如果有多个线程在等待通知,只有一个线程会被通知到,其它线程会继续等待。