溫馨提示×

php中線程如何實現(xiàn)條件變量

PHP
小樊
84
2024-08-13 23:12:41
欄目: 編程語言

在PHP中,線程的條件變量可以通過使用Threaded類的wait()notify()方法來實現(xiàn)。下面是一個簡單的示例:

<?php
class MyThread extends Thread {
    private $mutex;
    private $cond;

    public function __construct(Threaded $mutex, Threaded $cond) {
        $this->mutex = $mutex;
        $this->cond = $cond;
    }

    public function run() {
        $this->mutex->synchronized(function($mutex) {
            $this->cond->wait($mutex);
            echo "Thread is notified.\n";
        }, $this->mutex);
    }

    public function notify() {
        $this->mutex->synchronized(function($mutex) {
            $this->cond->notify();
        }, $this->mutex);
    }
}

$mutex = new Threaded();
$cond = new Threaded();

$thread = new MyThread($mutex, $cond);
$thread->start();

// 主線程等待1秒后通知子線程
sleep(1);
$thread->notify();

$thread->join();
?>

在這個示例中,我們創(chuàng)建了一個MyThread類,它接受一個Threaded類型的互斥鎖mutex和條件變量cond作為參數(shù)。在run()方法中,子線程首先對互斥鎖進行加鎖,然后調(diào)用條件變量的wait()方法等待通知。在主線程中,我們等待1秒后調(diào)用notify()方法通知子線程。子線程收到通知后輸出一條消息。

0