在 PHP 中,要實現多線程同步,可以使用 pthreads 擴展。以下是一個簡單的示例,說明如何使用 pthreads 實現同步:
首先,確保已經安裝了 pthreads 擴展。在 Ubuntu 系統上,可以使用以下命令安裝:
sudo apt-get install php-pthreads
然后,創建一個名為 ThreadExample.php
的文件,并在其中編寫以下代碼:
<?php
class SyncThread extends Thread {
private $value;
private $lock;
public function __construct($value) {
$this->value = $value;
$this->lock = new Mutex();
}
public function run() {
$this->lock->lock();
echo "Thread started with value: {$this->value}\n";
sleep(1); // 模擬耗時操作
$this->value += 1;
echo "Thread finished with value: {$this->value}\n";
$this->lock->unlock();
}
}
$thread1 = new SyncThread(1);
$thread2 = new SyncThread(1);
$thread1->start();
$thread2->start();
$thread1->join();
$thread2->join();
?>
在這個示例中,我們創建了一個名為 SyncThread
的類,它繼承了 Thread
類。我們使用了一個名為 $lock
的 Mutex
對象來實現同步。在 run
方法中,我們首先鎖定互斥量,然后執行一些操作(在這里是模擬耗時操作),接著更新共享變量 $value
,最后解鎖互斥量。
我們創建了兩個 SyncThread
實例,并分別啟動它們。通過調用 join
方法,我們確保主線程等待這兩個子線程完成后再繼續執行。
運行這個示例,你會看到兩個線程交替執行,從而實現了同步。