libgo
libgo copied to clipboard
可以动态添加协程吗
如果事先并不知道有多少个协程,运行过程中可以动态添加协程吗?
在sample2_yield.cpp 中尝试把co_sched.Start()
方法移动到最前面,结果就运行不起来了。
请问这部分应该怎么操作呢?
co_sched.goStart()
看一下void Scheduler::Start的代码最后一行mainProc->Process(); 这个方法是死循环去处理提交给它的协程。所以Start方法不会退出。
要想继续添加协程,只能将co_sched.Start() 放在其他线程中运行。 比如sample1中的std::thread t([]{ co_sched.Start(); });
作者也封装成了co_sched.goStart()