为什么我不应该使用async(已发生的)io
-
30-09-2019 - |
题
我现在正在写一些已有的代码(使用Gevent的Python),我将NGINX用作Web服务器,我觉得两者都很棒。有人告诉我,与事件有折衷,但看不到。有人可以放光吗?
詹姆士
解决方案
最大的问题是,如果没有线程,一个客户端的块将为所有客户端造成一个块。例如,如果一个客户端请求OS来阻止请求过程的资源(在磁盘上的文件,分页内存等),则所有客户端都必须等待。多线程服务器可以阻止一个客户端,并继续为其他客户服务。
也就是说,如果上述情况不太可能(也就是说,所有客户都会要求相同的资源),那么事件驱动是必经之路。
其他提示
事件编程的唯一困难是您绝不能阻止。如果您使用一些考虑到线程的库,这可能很难实现。如果您不控制这些库,则需要fork() +消息IPC。
不隶属于 StackOverflow