暂停代码如下:
$this->synchronized(function($thread){
if (!$thread->done)
$thread->wait();
}, $this);
唤醒代码如下:
$my->synchronized(function($thread){
$thread->done = true;
$thread->notify();
}, $my);
那么......那个thread->done到底是个什么玩意?为什么我去掉了程序依然跑得通?
恳请各位大佬指点迷津。
这里的
done
就是个普通的字段,和下面的用法其实是一样的,都是PHP的基本用法:Run
你的完整代码应该pthread里的实例吧:
start()
的时候开始在子线程里跑run()
,这是done
还没赋值,所以会执行wait()
。而主线程接着会执行notofy()
唤醒正在wait()
的子线程。另一种情况是主线程先对
done
赋值和执行notify()
,然后再到子线程执行run()
,这时子线程就不用wait
了,因为主线程已经notify()
了。