Open birdwyx opened 5 years ago
3.1 版去除了2.9 版本的Scheduler::Run , 仅留下了类似Scheduler::Runloop 类似功能的 Scheduler::Start / goStart, 也就是只保留了协程调度循环,摒弃了单次协程调度。这会为一些原先基于2.9的应用迁移到3.1 带了难题: 比如我同时使用libgo和另外一个库B,库B也使用了类似的任务调度循环,则这个库B就没有可能和libgo一起用了。
库B的调度循环: while(true){ run_tasks(); if(this->onEventCycle) this->onEventCycle(); }
原先我可以在 onEventCycle() 回调中调用 libgo 的Scheduler::Run(), 现在去掉了Scheduler::Run(), 这个功能就不能实现了。
最近准备迁移phpgo到最新libgo,发现了这个问题,因而讨论一下。盼复。
用goStart 另起线程去调度就好了
3.1 版去除了2.9 版本的Scheduler::Run , 仅留下了类似Scheduler::Runloop 类似功能的 Scheduler::Start / goStart, 也就是只保留了协程调度循环,摒弃了单次协程调度。这会为一些原先基于2.9的应用迁移到3.1 带了难题: 比如我同时使用libgo和另外一个库B,库B也使用了类似的任务调度循环,则这个库B就没有可能和libgo一起用了。
库B的调度循环: while(true){ run_tasks(); if(this->onEventCycle) this->onEventCycle(); }
原先我可以在 onEventCycle() 回调中调用 libgo 的Scheduler::Run(), 现在去掉了Scheduler::Run(), 这个功能就不能实现了。
最近准备迁移phpgo到最新libgo,发现了这个问题,因而讨论一下。盼复。