查询

Threaded::notify()函数—用法及示例

「 通知一个正在等待此对象上的线程 」


函数名称: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()方法来等待通知。
  • 线程必须在等待通知之前开始执行,否则通知将无效。
  • 线程通知的顺序无法保证,因此不应该依赖于特定的通知顺序。
  • 如果有多个线程在等待通知,只有一个线程会被通知到,其它线程会继续等待。
补充纠错
上一个函数: Threaded::pop()函数
下一个函数: Threaded::merge()函数
热门PHP函数
分享链接