社区
Linux/Unix社区
帖子详情
linux并发服务器中epoll+多线程分别怎么理解?
lgch123456
2011-01-04 04:42:49
linux并发服务器中可以用epol来实现 我看了几次epoll的工作原理 就是不是很明白,epoll再加上多线程实现的话 我就更不明了。请知道的帮我讲讲他们怎么揉在一起?同时使用多线程和epoll的工作原理是啥啊?
...全文
505
10
打赏
收藏
linux并发服务器中epoll+多线程分别怎么理解?
linux并发服务器中可以用epol来实现 我看了几次epoll的工作原理 就是不是很明白,epoll再加上多线程实现的话 我就更不明了。请知道的帮我讲讲他们怎么揉在一起?同时使用多线程和epoll的工作原理是啥啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lgch123456
2011-01-04
打赏
举报
回复
[Quote=引用 9 楼 linsen_519 的回复:]
如果单线程这3个字影响你了,那你就当没这3个字吧!
我的意思是说,你作的任何事情不都是在一个线程里实现的吗?
int main(){
cout<<"hello word"<<endl;
}
这里难道没有一个主线程吗?!
[/Quote]我只是对线程池中epoll的使用原理不明白 所以一些路就很难走去了。你能给我讲讲这个东西吗?
linsen_519
2011-01-04
打赏
举报
回复
如果单线程这3个字影响你了,那你就当没这3个字吧!
我的意思是说,你作的任何事情不都是在一个线程里实现的吗?
int main(){
cout<<"hello word"<<endl;
}
这里难道没有一个主线程吗?!
lgch123456
2011-01-04
打赏
举报
回复
单线程当事件多路分离?这个的工作机制是啥 a ?刚问错了
linsen_519
2011-01-04
打赏
举报
回复
[Quote=引用 6 楼 lgch123456 的回复:]
引用 5 楼 linsen_519 的回复:
引用 4 楼 lgch123456 的回复:
引用 3 楼 linsen_519 的回复:
事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?
你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是……
[/Quote]
当事件多路分离单线程无法满足并发需求时
-----------------------
比如这个服务器原来能处理10000用户的并发请求,后来规模大了又来了10000个用户,服务器吃不消了!
lgch123456
2011-01-04
打赏
举报
回复
[Quote=引用 5 楼 linsen_519 的回复:]
引用 4 楼 lgch123456 的回复:
引用 3 楼 linsen_519 的回复:
事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?
你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是尽量利用操作系统的事件多路分离机制
如:UNIX下……
[/Quote]当事件多路分离单线程无法满足?怎么理解啊?
linsen_519
2011-01-04
打赏
举报
回复
[Quote=引用 4 楼 lgch123456 的回复:]
引用 3 楼 linsen_519 的回复:
事件多路分离机制和线程是两码事
是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?
[/Quote]
你这个问题问的有点广,我不敢回答,怕误人子弟~哈哈
给你点建议吧~~
高吞吐量,低延迟的网络编程关键
1.不要采用一个连接一个线程的方式,而是尽量利用操作系统的事件多路分离机制
如:UNIX下的 select linux下的epoll BSD下的kqueue
或者使用这些机制的高层API (boost.asio&&ACE Reactor)
2.尽量使用异步I/O,而不是同步
3.当事件多路分离单线程无法满足并发需求时,将事件多路分离的线程扩展成线程池
lgch123456
2011-01-04
打赏
举报
回复
[Quote=引用 3 楼 linsen_519 的回复:]
事件多路分离机制和线程是两码事
[/Quote]是两码子事啊,但怎么揉在一起来提高服务器工作效率啊?
linsen_519
2011-01-04
打赏
举报
回复
事件多路分离机制和线程是两码事
lgch123456
2011-01-04
打赏
举报
回复
[Quote=引用 1 楼 justkk 的回复:]
某个线程处理某个特定事件吧
通过epoll检测一些事件,事件触发时,创建一个线程来专职处理这个事件
[/Quote]不是说可以用线程池来事先建你需要的线程来做吗?如果是这样的话 是不是每个线程做特定是事件,
epoll检测到事件是以fd返回到 这样的话 是不是每个fd就一个线程?
justkk
2011-01-04
打赏
举报
回复
某个线程处理某个特定事件吧
通过epoll检测一些事件,事件触发时,创建一个线程来专职处理这个事件
linux
并发
服务器
中
epoll
+
多线程
分别怎么
理解
linux
并发
服务器
中
epoll
+
多线程
分别怎么
理解
?
linux
并发
服务器
中
可以用epol来实现 我看了几次
epoll
的工作原理 就是不是很明白,
epoll
再加上
多线程
实现的话 我就更不明了。请知道的帮我讲讲他们怎么揉在一起?同时使用
多线程
和
epoll
的工作原理是啥啊? 昵称: lgch123456 时间: 2011-01-04 16:42:49 某个线程处理某个
linux
网络:
并发
服务器
及IO多路复用
一、
服务器
模型:从单客户端到多客户端1. 核心概念与基础流程二、单循环
服务器
(迭代
服务器
)1. 实现代码2. 核心特点三、
并发
服务器
:多进程与
多线程
模型1. 核心思想2. 多进程
并发
服务器
(1)实现代码(2)关键细节(3)优缺点3.
多线程
并发
服务器
(1)实现代码(2)关键细节(3)优缺点四、IO 模型:阻塞与非阻塞1. 阻塞 IO 模型(默认)2. 非阻塞 IO 模型五、IO 多路复用(高
并发
)1. 核心思想2. select函数(基础 IO 多路复用)
Linux
网络编程 | 高
并发
服务器
【多进程、线程、select、poll、
epoll
】
文章目录一、多进程
服务器
二、
多线程
服务器
三、多路IO转接3.1 select3.1.1 简介3.1.2 常用函数 一、多进程
服务器
二、
多线程
服务器
三、多路IO转接 前面的两个方法都能够实现多个客户端连接一个服务端,但在运行的过程
中
能发现,它会生成多个进程,每个客户端都会由与之对应的server进程。若应用于网络
中
,当访问的客户端足够多时,将会造成
服务器
崩溃;因此,在
Linux
上我们应该使用内核代替应用程序监视文件; 3.1 select 3.1.1 简介 select能监听的文件描述符个数受限于
27.
Linux
网络编程socket变成 tcp 高
并发
线程池 udp
好,咱们开始上课了,从今天开始咱们连续讲 8 天的,网络编程这个还是在
linux
环境下去讲,咱们先看一下咱们这 8 天都讲什么东西,跟大家一块来梳理一下,你先有个大概的印象,这些你也不要记,那么网络编程一共有 8 天的课,是吧?那么其
中
前 5 天咱们都讲
Linux
的网络编程的基础课程,基础大概前三天是概念加编程,那么概念会给大家每天都会提到一些,因为这个概念较多,一些理论性的东西比较多,所以咱们给它拆分开了,咱不能说这一天广讲概念是不是?那这样的话大家听到叫枯燥。 那么看见每天都学什么啊?第一天
Linux
系统编程——TCP
并发
模型
TCP要实现一对多需要用到TCP
并发
服务器
,而
服务器
分为两种1,单循环
服务器
:服务端同一时刻只能处理一个客户端任务2,
并发
服务器
:服务端同一时刻可以处理多个客户端的任务,例如UDPTCP服务端
并发
模型1,多进程:资源开销大,安全性高2,
多线程
:资源开销小,相同资源环境下
并发
量大3,线程池:为了解决多进程或者
多线程
,再
服务器
运行过程
中
频繁你创建和销毁带来的时间消耗问题,基于生产者和消费者编程模型,以及任务队列等,实现的一套
多线程
框架4,IO多路复用。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章