在PHP中,线程之间可以通过共享变量来同步数据。一种常见的方法是使用锁来确保在一个线程访问共享变量时,另一个线程不能同时访问它。
PHP中可以使用Mutex
类来实现锁。以下是一个简单的示例代码:
$mutex = new Mutex();
$sharedData = 0;
$thread1 = new Thread(function () use ($mutex, &$sharedData) {
$mutex->synchronized(function () use (&$sharedData) {
$sharedData = 5;
});
});
$thread2 = new Thread(function () use ($mutex, &$sharedData) {
$mutex->synchronized(function () use (&$sharedData) {
echo $sharedData; // 输出 5
});
});
$thread1->start();
$thread2->start();
$thread1->join();
$thread2->join();
在上面的示例中,Mutex
类用于创建一个锁对象,线程1和线程2分别在锁对象上进行同步操作。线程1将共享变量$sharedData
赋值为5,而线程2在获取锁之后打印出共享变量的值。
通过使用锁来同步线程之间的数据访问,可以确保在一个线程对共享变量进行操作时,另一个线程不能同时进行访问,从而避免数据竞争和并发访问问题。