多路复用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
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用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模型呢?
  • 打赏
  • 举报
回复
可以,一般也用不着这样。

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

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧