在执行IO时,是否会阻塞主线程?

时间:2013-11-02 02:53:44

标签: ruby eventmachine thin

我知道Thin是基于EventMachine构建的,它提供异步IO。如果我使用像RoR或Sinatra这样的机架框架并进行一些DB调用(不使用任何特殊库),那是否会阻止主事件循环(假设我使用Thin作为Web服务器)?

由于

1 个答案:

答案 0 :(得分:1)

是的。

标准数据库客户端是在Ruby的TCPSocket之上构建的,它会在等待响应时阻塞主线程。

您应该使用已修补的客户端来替换与EM :: Connection的TCP连接。其中一些是在EventMachine库本身中呈现的