作为我的私人项目,我正在一个由libuv和Scheme解释器组成的Web应用程序服务器上工作,因此它的工作方式类似于Node.js的Scheme版本。
在我当前的实现中,空闲处理程序调用一个函数,该函数更新Scheme解释器的状态。在Scheme代码中,所有阻止功能(例如数据库查询)都在单独的线程中调用,因此此更新功能绝不应阻止。
看起来不错。但是当我运行此服务器时,CPU负载达到100%,并且散热风扇非常烦人。
为减少CPU负载,我在空闲处理程序的底部添加了usleep(1000);
。 libuv可以接受吗?或者,空闲的处理程序不应该包含任何阻塞调用吗?