锁定老帖子 主题:来说说epoll+线程池
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-12
最后修改:2009-01-12
Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。
|
|
返回顶楼 | |
发表时间:2009-01-13
。。。。。。。。。。感觉到了上古时代。真不知道说什么好。
|
|
返回顶楼 | |
发表时间:2009-01-13
iunknown 写道 关中刀客 写道 简单说就是你每次的epoll_wait所花费的时间,相对于你得到事件后所作的read,write==花费的时间要少狠多,至少我感觉是这样子的。
epoll_wait 返回说某个 socket 有可读,或者可写事件,这个时候进行 read/write 操作,花费的时间应该不多,实际做的操作应该是从 kernel 的 buffer 中 copy 数据到 应用程序的 buffer ,或者反过来。 真正耗时的操作应该是对具体事务的处理。比如对于一个 login 的操作,epoll_wait 返回说 socket 上有数据可读了,应用程序读入 client 传过来的 username/password ,然后到数据库中去查找对应的 username ,并且检查 password 是否匹配。最耗时的操作应该是在查数据库这一个步骤。 如果实际的事务处理耗费的时间很少,那么使用单线程来做就可以了,比如 memcached 。当然,现在 memcached 也支持多线程了,但主要的考虑是为了充分利用多 CPU 。 终于看到一个说正确的了。 一般来说, 会用一个线程专们用来读写数据。 多线程是为了处理业务。 如果又读数据, 又是做业务,还一个THREAD, 怎么也是不科学的。 |
|
返回顶楼 | |
发表时间:2009-01-14
sdh5724 写道 iunknown 写道 关中刀客 写道 简单说就是你每次的epoll_wait所花费的时间,相对于你得到事件后所作的read,write==花费的时间要少狠多,至少我感觉是这样子的。
epoll_wait 返回说某个 socket 有可读,或者可写事件,这个时候进行 read/write 操作,花费的时间应该不多,实际做的操作应该是从 kernel 的 buffer 中 copy 数据到 应用程序的 buffer ,或者反过来。 真正耗时的操作应该是对具体事务的处理。比如对于一个 login 的操作,epoll_wait 返回说 socket 上有数据可读了,应用程序读入 client 传过来的 username/password ,然后到数据库中去查找对应的 username ,并且检查 password 是否匹配。最耗时的操作应该是在查数据库这一个步骤。 如果实际的事务处理耗费的时间很少,那么使用单线程来做就可以了,比如 memcached 。当然,现在 memcached 也支持多线程了,但主要的考虑是为了充分利用多 CPU 。 终于看到一个说正确的了。 一般来说, 会用一个线程专们用来读写数据。 多线程是为了处理业务。 如果又读数据, 又是做业务,还一个THREAD, 怎么也是不科学的。 如果仅仅考虑proxy的话,单线程就应该可以了吧。。 MS nginx就是这样nginx的worker process仅仅是为了均摊每个进程的IO负荷。。。。 不知道说的对不对。。。 |
|
返回顶楼 | |
发表时间:2009-01-14
Magicloud 写道 Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。
well 实际上这不应该是个原因。 Linux上面没有官方的拒绝线程。但是linux不管线程还是进程都是clone出来的。 这点设计不是很好。所以很多保守的做法就是在linux下,尽量避免线程。 但是这并不是一个理由拒绝在linux下使用线程。 当然进程最稳定,但是进程所带来的空间开销不是永远可以容忍的。 |
|
返回顶楼 | |
发表时间:2009-01-15
mikeandmore 写道 Magicloud 写道 Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。
well 实际上这不应该是个原因。 Linux上面没有官方的拒绝线程。但是linux不管线程还是进程都是clone出来的。 这点设计不是很好。所以很多保守的做法就是在linux下,尽量避免线程。 但是这并不是一个理由拒绝在linux下使用线程。 当然进程最稳定,但是进程所带来的空间开销不是永远可以容忍的。 linux对线程的支持远比windows复杂,没有“不管……都是……”一说。 常见说法“linux创建线程相对慢“是过去对轻量级进程的说法,现在过时了。 而进程的空间开销问题,linux早就做到重入了,共享data和code段不会导致重复浪费。 |
|
返回顶楼 | |
发表时间:2009-03-12
epoll和select改进的地方在哪里 你们都没搞清楚在这里讨论 唉
|
|
返回顶楼 | |