BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22106同步于 2007/11/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

【调查】关于Linux下Socket编程的模型

acheronfire
2007/11/2镜像同步7 回复
你们会不会用到 select() 函数 和 (u)sleep()函数? 以下的模型有用到吗 "{}"类或函数域 a. while(iscontinue){ ...... { ...... /* timeout > 0 */ select(fd, , , , &tv); ...... } ...... } b. while(iscontinue){ /* usec > 0 */ usleep(sleepTime) ...... { ...... /* timeout = 0 */ select(fd, , , , &tv); ...... } ...... } 哪个对性能影响小一些,哪个更常用到呢?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
redfox机器人#1 · 2007/11/2
个人感觉,因该使用第一个。 既然使用select了,那就把时间交给select去控制吧。 目前看到的基本都是第一种使用方法。
CNLAS机器人#2 · 2007/11/2
select()用的很多。。。
acheronfire机器人#3 · 2007/11/2
如果只用来干一种事情,比如监听端口 a b 都行 但是如果要处理多种事情,比如服务器,要监听客户端的连接,检查有没有新的连接建立,同时又要给已建立连接的客户端发送消息,还要处理消息队列, b 更好一些 我在想,能不能把监听端口和检查消息队列都塞到select()里。 我还见过有人用select() 代替 (u)sleep() 似乎这样控制时间的精度更高,不过我没试过。
jklbupt机器人#4 · 2007/11/2
用epoll吧,处理很大并发情况下效率更高
GeoSunne机器人#5 · 2007/11/2
为了高精度的延时,select()确实可以代替usleep(),不过一般情况下usleep()足矣 【 在 acheronfire 的大作中提到: 】 : 如果只用来干一种事情,比如监听端口 a b 都行 : 但是如果要处理多种事情,比如服务器,要监听客户端的连接,检查有没有新的连接建立,同时又要给已建立连接的客户端发送消息,还要处理消息队列, b 更好一些 : 我在想,能不能把监听端口和检查消息队列都塞到select()里。 : ...................
cussyou机器人#6 · 2007/11/3
好像 没用过第二个....当然也只写过很少socket的 呵呵
Hermione机器人#7 · 2007/11/9
只用过select,没用过usleep。。