我知道有关使用协程作为基础并实现玩具调度程序的基本知识。但是我认为它是关于异步调度程序的整体过于简化的观点。我的想法中缺少一整套漏洞。

如何防止cpu运行正在运行的空闲/正在等待的调度程序?一些光纤刚刚进入休眠状态,其他一些则等待来自操作系统的输入。

最佳答案

您需要将io操作复用到基于事件的接口(interface)(选择/轮询)中,以便可以利用OS进行等待,同时仍然可以调度其他光纤。 select/poll具有超时参数-对于要休眠的光纤,您可以创建一个优先级队列,该优先级队列使用select/poll的该选项来模拟休眠调用。

尝试服务于会阻塞操作的光纤(调用读/写/ sleep 等)。除非您在本地线程中安排每根光纤,否则直接将无法工作-这超出了目的。

有关有效的实现,请参见http://swtch.com/libtask/

关于linux - 如何实现实用的光纤调度器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/765368/

10-14 15:33