论坛首页 综合技术论坛

来说说epoll+线程池

浏览 17445 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (11)
作者 正文
   发表时间:2009-01-12   最后修改:2009-01-12
Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。
0 请登录后投票
   发表时间:2009-01-13  
。。。。。。。。。。感觉到了上古时代。真不知道说什么好。
0 请登录后投票
   发表时间: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, 怎么也是不科学的。
0 请登录后投票
   发表时间: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负荷。。。。
不知道说的对不对。。。
0 请登录后投票
   发表时间:2009-01-14  
Magicloud 写道
Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。


well
实际上这不应该是个原因。
Linux上面没有官方的拒绝线程。但是linux不管线程还是进程都是clone出来的。
这点设计不是很好。所以很多保守的做法就是在linux下,尽量避免线程。
但是这并不是一个理由拒绝在linux下使用线程。

当然进程最稳定,但是进程所带来的空间开销不是永远可以容忍的。
0 请登录后投票
   发表时间:2009-01-15  
mikeandmore 写道
Magicloud 写道
Linux常用编程模型是多进程,无数服务、程序都是单线程的,如果连这个都不知道,就别讨论linux编程了。


well
实际上这不应该是个原因。
Linux上面没有官方的拒绝线程。但是linux不管线程还是进程都是clone出来的。
这点设计不是很好。所以很多保守的做法就是在linux下,尽量避免线程。
但是这并不是一个理由拒绝在linux下使用线程。

当然进程最稳定,但是进程所带来的空间开销不是永远可以容忍的。

linux对线程的支持远比windows复杂,没有“不管……都是……”一说。
常见说法“linux创建线程相对慢“是过去对轻量级进程的说法,现在过时了。
而进程的空间开销问题,linux早就做到重入了,共享data和code段不会导致重复浪费。
0 请登录后投票
   发表时间:2009-03-12  
epoll和select改进的地方在哪里 你们都没搞清楚在这里讨论 唉
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics