cwlr.net
当前位置:首页 >> linux sElECt怎样解决效率慢的问题 >>

linux sElECt怎样解决效率慢的问题

因为 * 代表 你要查询出来所有的字段数据。如果你确实需要所有字段的话这样也可以了,如果你只需要其中的几个字段,那么这样就显得有点效率低了。你把你需要的字段写出来最好了。

#include #include #include #include int main() { int rc = 0; struct timeval tv; while (true) { tv.tv_sec = 5; tv.tv_usec = 0; rc = select(0, NULL, NULL, NULL, &tv); printf("select = %d\n", rc); } return 0; }

select默认就是阻塞式的,只有关注的描述符有效时,才会被唤醒执行相应的操作

listen默认是同时5个链接收到连接后尽快accept,就可以再收5个了所以你的问题应该在于尽快把连接建立而不是考虑如何接收更多的等待连接

既然select已经阻塞了,它就不会返回,除非有信号.你要非得让它返回的话就用信号吧. 不过一般用select时都不会设为阻塞,因为你设为阻塞不是跟没用select一样吗?recv本身也是阻塞的,而且主动close套接字时还会返回0,可以判断.

你的fd数量超过1024了???

是不是select实参传错了,都传入的是读的集合了。

1、函数: Sleep功 能: 执行挂起一段时间用 法: void Sleep(DWORD dwMilliseconds);在VC中使用带上头文件#include ( Sleep函数存放头文件:WinBase.h)在gcc编译器中,使用的头文件因gcc版本的不同而不同#include Sleep()单位为毫秒,sleep()...

我也不完全理解,但是比你知道的多点。 Linux中,分内核态和用户态。 你写的所有的驱动,都是出于内核态->可以直接使用内核相关资源; 应用层,都是用户态->无法直接操作底层的东西 -> 想要操作,比如获得权限,切换到内核态,然后才能操作。 你...

select是不断的监听文件描述符,肯定能探测到它已经关闭了,那么关闭的fd肯定就得从它的fd_set中退出来哇,退出来了,它自然就不监听这个fd了,然后就只有等到超时退出了·····我个人的理解,说的好就给个分···呵呵··

网站首页 | 网站地图
All rights reserved Powered by www.cwlr.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com