PHPでマルチスレッドの同期をどのように実装しますか?

PHPにおけるマルチスレッド同期は、pthreads拡張の使用で実装可能です。以下は、pthreads拡張を用いたマルチスレッド同期のサンプルです。

<?php
class MyThread extends Thread {
    public function run() {
        // 在这里编写线程执行的代码
        
        // 通过synchronized关键字来实现同步
        // 只有获取到锁的线程才能执行该代码块
        synchronized(function(){
            // 在这里编写需要同步的代码
        });
    }
}

// 创建线程对象
$thread1 = new MyThread();
$thread2 = new MyThread();

// 启动线程
$thread1->start();
$thread2->start();

// 等待线程执行完毕
$thread1->join();
$thread2->join();
?>

MyThreadクラスは、上記の例ではThreadクラスを継承し、runメソッドをオーバーライドしています。runメソッド内には、スレッドが実行するコードが記述されています。synchronizedキーワードを使用してコードブロックを同期させており、1つのスレッドのみが排他ロックを取得してコードブロックを実行できます。

メインスレッドで、$thread1と$thread2という2つのスレッドオブジェクトを生成し、それぞれのスレッドを実行します。最後にjoinメソッドを使用して、スレッドの実行が完了するまで待機します。

pthreads 拡張機能を使用するには、PHP でインストールして有効にする必要があることに注意してください。

bannerAds