代碼如下:
$a = Coroutine::run(function() {
$obj = 'a';
defer(function() use (&$obj) {
// 這里會(huì)使用unset會(huì)直接把PHP都奔潰,使用$obj = null;則不會(huì)
// 這里主要是清理內(nèi)存
unset($obj);
var_dump(Coroutine::getCurrent()->isAlive(), 'defer1', $obj);
sleep(1);
var_dump('defer1------');
});
sleep(10);
echo '111';
});
Coroutine::run(function() use ($a) {
$a->kill();
});
$time = microtime(true);
\Swow\Sync\waitAll();
sleep(2);
var_dump(microtime(true) - $time);
手動(dòng)kill A協(xié)程后,defer函數(shù)執(zhí)行了,發(fā)現(xiàn)如下情況
1,里面檢測(cè)到協(xié)程是存活狀態(tài)
2,var_dump('defer1------'); 這段沒(méi)有執(zhí)行
3,defer里面unset直接把php搞奔潰了
這種算不算bug??