我现在正在写一些事件代码(使用gevent在python中),我使用nginx作为Web服务器,我觉得两者都很棒。有人告诉我,事件有一个权衡,但无法看到它。有人可以解释一下吗?
詹姆斯
答案 0 :(得分:9)
规划编程的唯一困难是你永远不能阻止。如果您使用一些设计时考虑了线程的库,则很难实现。如果你不控制这些库,可以使用fork()+ message ipc。
答案 1 :(得分:1)
最大的问题是没有线程,一个客户端的块将导致所有客户端的块。例如,如果一个客户端请求资源(磁盘上的文件,分页内存等)需要操作系统阻止请求进程,那么所有客户端都必须等待。多线程服务器只能阻止一个客户端并继续为其他客户端服务。
也就是说,如果上述情况不太可能(即所有客户端都会请求相同的资源),那么事件驱动就是可行的方法。