yyzybb537 / libgo

Go-style concurrency in C++11
MIT License
3.22k stars 758 forks source link

父协程等待子协程退出处理 #133

Closed ht101996 closed 5 years ago

ht101996 commented 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... } }

ht101996 commented 5 years ago

已经查出原因,是因为异常情况导致先调co_sched.Stop();导致的