社区
Linux/Unix社区
帖子详情
linux并发服务器中epoll+多线程分别怎么理解?
lgch123456
2011-01-04 04:42:49
linux并发服务器中可以用epol来实现 我看了几次epoll的工作原理 就是不是很明白,epoll再加上多线程实现的话 我就更不明了。请知道的帮我讲讲他们怎么揉在一起?同时使用多线程和epoll的工作原理是啥啊?
...全文
475
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检测一些事件,事件触发时,创建一个线程来专职处理这个事件
epoll
多线程
高
并发
服务器
代码
linux
下完整的
epoll
多线程
高
并发
服务器
代码
(牛客网C++课程)
Linux
高
并发
Web
服务器
项目实战(带定时检测代码)
(牛客网C++课程)
Linux
高
并发
Web
服务器
项目实战(带定时检测代码) 技术框架: 1. 线程池 + 非阻塞 socket +
epoll
+ 事件处理的
并发
模型 2. 状态机解析HTTP请求 3. 心跳机制 4. 简易日志系统 主要内容: 1. 使用 socket 实现
服务器
和浏览器客户端的通信; 2. 用
epoll
事件检测技术实现 IO 多路复用,提高运行效率; 3. 采用模拟 Proacto r的事件处理模式,利用线程池实现
多线程
机制,实现高
并发
通信,减少频繁创建和销毁线程带来的开销;(信号和互斥锁) 4. 主进程负责事件的读写,子线程负责业务逻辑——用有限状态机解析HTTP(GET)请求报文;生成相应的响应报文。 5. 利用链表数据结构实现心跳机制(超时检测处理)。
C++第4课:C++协程及高
并发
网络协程库State-Threads
C++第4课:C/C++协程及高
并发
网络协程库State-Threads大家好,我将带领大家一起来学习CC/C++协程的基础知识,包括setjmp, longjmp,和ucontext。然后讲解汇编语言的CPU寻址,以及CS:IP控制CPU走向的原理。然后讲解高
并发
网络协程库State-Threads的案例应用,开发上万个协程,以及TCP
服务器
案例。本课程的内容主要包括C/C++语言的setjmp、longjmp和goto,C/C++语言的协程简介、8086汇编语言的CS和IP寄存器及寻址、异步I/O+
epoll
+协程、IO复用机制、
Linux
协程之ucontext组件、
Linux
协程之生产者消费者、高
并发
网络协程库State-Threads、用State-Threads创建高
并发
TCP
服务器
等。
tcp高效率
并发
服务器
在
Linux
用C语言编写,,通过
epoll
实现高效率
并发
服务器
物联网&嵌入式模型
嵌入式&物联网,
Linux
服务器
模型,循环
服务器
,
并发
服务器
【多进程,
多线程
,IO口多路复用(select、 poll、
epoll
)+
多线程
/进程
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章