现在的位置: 首页 > 综合 > 正文

linux并发服务器中epoll+多线程分别怎么理解

2013年09月04日 ⁄ 综合 ⁄ 共 1846字 ⁄ 字号 评论关闭

linux并发服务器中epoll+多线程分别怎么理解?

linux并发服务器中可以用epol来实现 我看了几次epoll的工作原理 就是不是很明白,epoll再加上多线程实现的话 我就更不明了。请知道的帮我讲讲他们怎么揉在一起?同时使用多线程和epoll的工作原理是啥啊?

昵称: lgch123456  时间: 2011-01-04 16:42:49
某个线程处理某个特定事件吧
通过epoll检测一些事件,事件触发时,创建一个线程来专职处理这个事件

昵称: justkk  时间: 2011-01-04 16:52:20
引用 1 楼 justkk 的回复:

某个线程处理某个特定事件吧
通过epoll检测一些事件,事件触发时,创建一个线程来专职处理这个事件

不是说可以用线程池来事先建你需要的线程来做吗?如果是这样的话 是不是每个线程做特定是事件,
epoll检测到事件是以fd返回到 这样的话 是不是每个fd就一个线程?

昵称: lgch123456  时间: 2011-01-04 17:00:06
事件多路分离机制和线程是两码事

昵称: linsen_519  时间: 2011-01-04 17:02:28
引用 3 楼 linsen_519 的回复:

事件多路分离机制和线程是两码事

是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?

昵称: lgch123456  时间: 2011-01-04 17:07:33
引用 4 楼 lgch123456 的回复:

引用 3 楼 linsen_519 的回复:

事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?

你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是尽量利用操作系统的事件多路分离机制
如:UNIX下的 select linux下的epoll BSD下的kqueue
或者使用这些机制的高层API (boost.asio&&ACE Reactor)
2.尽量使用异步I/O,而不是同步
3.当事件多路分离单线程无法满足并发需求时,将事件多路分离的线程扩展成线程池

昵称: linsen_519  时间: 2011-01-04 17:16:52
引用 5 楼 linsen_519 的回复:

引用 4 楼 lgch123456 的回复:

引用 3 楼 linsen_519 的回复:

事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?

你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是尽量利用操作系统的事件多路分离机制
如:UNIX下……

当事件多路分离单线程无法满足?怎么理解啊?

昵称: lgch123456  时间: 2011-01-04 17:21:45
引用 6 楼 lgch123456 的回复:

引用 5 楼 linsen_519 的回复:

引用 4 楼 lgch123456 的回复:

引用 3 楼 linsen_519 的回复:

事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?

你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是……

当事件多路分离单线程无法满足并发需求时
-----------------------
比如这个服务器原来能处理10000用户的并发请求,后来规模大了又来了10000个用户,服务器吃不消了!

昵称: linsen_519  时间: 2011-01-04 17:26:16
单线程当事件多路分离?这个的工作机制是啥 a ?刚问错了

昵称: lgch123456  时间: 2011-01-04 17:30:10
如果单线程这3个字影响你了,那你就当没这3个字吧!
我的意思是说,你作的任何事情不都是在一个线程里实现的吗?

int main(){
cout<<"hello word"<<endl;
}

这里难道没有一个主线程吗?!

昵称: linsen_519  时间: 2011-01-04 17:36:06
引用 9 楼 linsen_519 的回复:

如果单线程这3个字影响你了,那你就当没这3个字吧!
我的意思是说,你作的任何事情不都是在一个线程里实现的吗?

int main(){
cout<<"hello word"<<endl;
}

这里难道没有一个主线程吗?!

我只是对线程池中epoll的使用原理不明白 所以一些路就很难走去了。你能给我讲讲这个东西吗?

昵称: lgch123456  时间: 2011-01-04 17:45:47

抱歉!评论已关闭.