libgo icon indicating copy to clipboard operation
libgo copied to clipboard

提供创建高优先级(被立刻调度的)协程的接口

Open TKONIY opened this issue 3 years ago • 2 comments

brpc 的bthread中提供一个bthread_start_urgent接口,可以启动一个协程后立即将它swap in当前的线程上执行。这种接口的应用场景是新的协程要读写当前线程上的数据时,可以让他拥有更好的cache locality。 libgo我阅读了一下发现并没有提供类似的接口,请问是否有这样的接口以及是否可以考虑增加一个呢?我非常乐意参与到接口的开发上。

TKONIY avatar Mar 18 '22 11:03 TKONIY

现在离实现这个功能最接近的方式是调用go新建协程然后yield当前协程出去,但这样并不能保证新的协程立刻被swap in执行,还需要等待processor调度完它前面的协程再将其从queue中拿出来运行,浪费了很多时间并且也不一定能保证新协程不被steal走。

TKONIY avatar Mar 18 '22 11:03 TKONIY

很好的主意,后续会考虑实现

yyzybb537 avatar Sep 08 '22 08:09 yyzybb537