Closed ht101996 closed 5 years ago
如下方式: 父协程等待子协程退出会出现莫名其妙卡死在“”_close_readchan << true;“ 这句, TryPop也接收不到数据,这种情况要怎么查? (程序中还以类似方式起了很多其他协程,但是我都跟踪了正常退出,但有时候,个别协程死活就卡死在这里了) 新项目用了libgo,有点着急~
Test::Test() { go [=] { run(); }; }
Test::~Test() { _close_readchan << true; }
Test::run() { while(true) { result = chan.TryPop(val) if (result) { break; } // Do something... } }
已经查出原因,是因为异常情况导致先调co_sched.Stop();导致的
如下方式: 父协程等待子协程退出会出现莫名其妙卡死在“”_close_readchan << true;“ 这句, TryPop也接收不到数据,这种情况要怎么查? (程序中还以类似方式起了很多其他协程,但是我都跟踪了正常退出,但有时候,个别协程死活就卡死在这里了) 新项目用了libgo,有点着急~
Test::Test() { go [=] { run(); }; }
Test::~Test() { _close_readchan << true; }
Test::run() { while(true) { result = chan.TryPop(val) if (result) { break; } // Do something... } }