比如 100 个客户端,连接到了服务器,然后都停止操作, epoll 好处就是一个进程(线程)就可以 hold 住 100 个连接,而不用创建 100 个进程或线程由操作体统来切换上下文,给每个线程都分一点时间,而是当有客户端传送过来数据的时候,阻塞结束可以进行下一步操作,伪代码:
for loop
# 阻塞等待 100 个客户端返回一个可读的 socket
# def dosomething
问题是如果在 do something 里进行数据库连接等费时间的 io 操作,响应时间依然感人啊。。。
比如两个人并发访问,第一个人 do something,花了三秒(io 操作),下一个用户就得等三秒才开始为他服务,,,,
我的理解是否有错误?解决do something
里面 io 时间的又是什么技术?我大概觉得能用 gevent ( io 阻塞的时候 yield 到其他协程),但是想不明白具体是怎么做的,有什么文章或者书吗?谢谢大家。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.