Open TKONIY opened 2 years ago
brpc 的bthread中提供一个bthread_start_urgent接口,可以启动一个协程后立即将它swap in当前的线程上执行。这种接口的应用场景是新的协程要读写当前线程上的数据时,可以让他拥有更好的cache locality。 libgo我阅读了一下发现并没有提供类似的接口,请问是否有这样的接口以及是否可以考虑增加一个呢?我非常乐意参与到接口的开发上。
bthread_start_urgent
现在离实现这个功能最接近的方式是调用go新建协程然后yield当前协程出去,但这样并不能保证新的协程立刻被swap in执行,还需要等待processor调度完它前面的协程再将其从queue中拿出来运行,浪费了很多时间并且也不一定能保证新协程不被steal走。
go
yield
processor
很好的主意,后续会考虑实现
brpc 的bthread中提供一个
bthread_start_urgent
接口,可以启动一个协程后立即将它swap in当前的线程上执行。这种接口的应用场景是新的协程要读写当前线程上的数据时,可以让他拥有更好的cache locality。 libgo我阅读了一下发现并没有提供类似的接口,请问是否有这样的接口以及是否可以考虑增加一个呢?我非常乐意参与到接口的开发上。