社区
Linux/Unix社区
帖子详情
多路复用select 可以用在多线程里么?
dukang_2005
2009-06-10 05:30:14
select监控一组socketfd, 可否用n个线程,每个线程里用select监控一组不同的socketfd?
这样调用就是如下
select(maxfd1, ...)
select(maxfd2, ...)
select(maxfdn, ...)
会导致maxfdn > ...>maxfd2>maxfd1
使得最后一个select 去扫描所有的fd
...全文
207
7
打赏
收藏
多路复用select 可以用在多线程里么?
select监控一组socketfd, 可否用n个线程,每个线程里用select监控一组不同的socketfd? 这样调用就是如下 select(maxfd1, ...) select(maxfd2, ...) select(maxfdn, ...) 会导致maxfdn > ...>maxfd2>maxfd1 使得最后一个select 去扫描所有的fd
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
once_and_again
2009-06-12
打赏
举报
回复
epoll 是不 是要用 信号 激活? 如果有新的 连接?
yanghehong
2009-06-12
打赏
举报
回复
[Quote=引用 3 楼 puheavy123 的回复:]
为什么不采用新的epoll网络I/O模型而采用老的select网络I/O模型呢?
[/Quote]
epoll是Linux特有的,不是一个标准的东西啊。所以如果楼主使用的是其他操作系统。。。
还有,不同应用场合要求也不一样啊:)
-
千里孤行
lanxi226
2009-06-11
打赏
举报
回复
一个就行了啊
threeleafzerg007
2009-06-11
打赏
举报
回复
用1个select就行了嘛 干嘛要用多个捏?
puheavy123
2009-06-11
打赏
举报
回复
为什么不采用新的epoll网络I/O模型而采用老的select网络I/O模型呢?
猫已经找不回了
2009-06-10
打赏
举报
回复
可以,一般也用不着这样。
http://www.cppblog.com/darkdestiny/archive/2009/01/03/71074.html
这哥们也是不爱用epoll和IOCP的
pottichu
2009-06-10
打赏
举报
回复
当然不是。。。你的理解有错误。。
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
select 只等待 readfds, writefds, exceptfds, 中的 fd
windows下
多路复用
IO(
select
,WSAAsync
Select
,WSAEvent
Select
)
windows下
多路复用
IO(
select
,WSAAsync
Select
,WSAEvent
Select
)
为什么说Redis是单线程的以及Redis为什么这么快!
首先说下原因: 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用
多路复用
技术,可以处理并发的连接; 简单解释下第二条:上下文切换就是cpu在
多线程
之间进行轮流执行(枪战cpu资源),而redis单线程的,因此避免了繁琐的
多线程
上下文切换。 重点解释下
多路复用
: 多路-指的是多个socket连接,复用-指的是复用一个线程。 目前,
多路复用
主要有三种技术:
select
,poll,epoll。它们出现的顺序是哟西按后的,越排后的技术改正了之前技术的缺点。epoll是最新的也是目前最好的
多路复用
技术。 举个例子:一个酒吧
同时打开多端口的通信程序
采用Socket通讯协议进行 一个可以同时打开多端口 客户端及服务端通信的 自定义命令解析试验程序。
里
面抱含了一个原生数据库ADO操作类,初数sockt及ADO数据库操作者很值得一看。
IO
多路复用
之
select
IO
多路复用
也称IO多路转接,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或多个)就绪的文件描述符进行通信了。通过这种方式在单线程/进程的场景下也可以在服务器端实现并发。常见的IO多路转接方式有:
select
、poll、epoll。
多线程
/多进程/
select
多路复用
的区别
文章目录 一、多进程 二、
多线程
三、
多路复用
一、多进程 最简单的并行处理方式,父进程接收用户的连接请求,使用fork、exec等创建子进程去处理用户请求 多进程优点:编程简单,易于理解 每个进程地址空间相互隔离,彼此不相影响,一个进程的损坏不会影响另一个进程 充分利用多核资源 多进程缺点:进程相互隔离,彼此之间的通信较为困难 频繁创建销毁进程会加重系统负担 二、
多线程
线程寄居于进程之中,在进程
里
创建,每个线程都共享这个进程的地址空间,线程之间的通信只需要读取内存就可以了
多线程
优点: 线程间的通信不需
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章