PHP pthreads v3中如何实现synchronized同步块示例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1494个文字,预计阅读时间需要6分钟。
原文示例:本文实例讲述了PHP+pthreads+v3下同步处理synchronized用法。分享给大众参考,具体如下:之所以会用到同步,是因为如果多个线程中对同一资源进行操作时,会产生混乱。比如2个线程同时写入同一个文件,会发生数据错误。
改写后:本文以实例介绍PHP+pthreads+v3中的同步处理方法synchronized。以下为分享内容:同步的使用源于多个线程对同一资源操作可能导致的混乱。例如,两个线程同时写入同一文件,会导致数据错误。
本文实例讲述了PHP pthreads v3下同步处理synchronized用法。分享给大家供大家参考,具体如下:
之所以会用到同步,是因为如果多个线程中对同一个资源进行操作时,会发生混乱。
比如2个线程对变量进行加1操作,第1个线程还没来的及改写数据时,第2个线程就对变量进行操作了,那变量最终的结果就是未知的,这个时候就需要同步来进行控制了。
例子如下:
<?php class Count extends Thread { public $cnt = 0; public function run() { $this->add(); } public function add() { //对成员进行加1操作 for ($i = 0; $i < 100000; $i++) { ++$this->cnt; } } } $c = new Count(); //调用start()时,线程run()中就调用了add()方法 $c->start(); //我们人为再调用一次add()方法,这时候就会有两个for循环对$cnt进行操作 $c->add(); //把创建的线程加入主线程中,让主线程等待子线程运行结束 $c->join(); //这里输出就是不确定性的 var_dump($c->cnt);
多次运行后,$cnt的值是不确定的。
本文共计1494个文字,预计阅读时间需要6分钟。
原文示例:本文实例讲述了PHP+pthreads+v3下同步处理synchronized用法。分享给大众参考,具体如下:之所以会用到同步,是因为如果多个线程中对同一资源进行操作时,会产生混乱。比如2个线程同时写入同一个文件,会发生数据错误。
改写后:本文以实例介绍PHP+pthreads+v3中的同步处理方法synchronized。以下为分享内容:同步的使用源于多个线程对同一资源操作可能导致的混乱。例如,两个线程同时写入同一文件,会导致数据错误。
本文实例讲述了PHP pthreads v3下同步处理synchronized用法。分享给大家供大家参考,具体如下:
之所以会用到同步,是因为如果多个线程中对同一个资源进行操作时,会发生混乱。
比如2个线程对变量进行加1操作,第1个线程还没来的及改写数据时,第2个线程就对变量进行操作了,那变量最终的结果就是未知的,这个时候就需要同步来进行控制了。
例子如下:
<?php class Count extends Thread { public $cnt = 0; public function run() { $this->add(); } public function add() { //对成员进行加1操作 for ($i = 0; $i < 100000; $i++) { ++$this->cnt; } } } $c = new Count(); //调用start()时,线程run()中就调用了add()方法 $c->start(); //我们人为再调用一次add()方法,这时候就会有两个for循环对$cnt进行操作 $c->add(); //把创建的线程加入主线程中,让主线程等待子线程运行结束 $c->join(); //这里输出就是不确定性的 var_dump($c->cnt);
多次运行后,$cnt的值是不确定的。

