UNIX中select的实现和以及字节数组来实现位操作
来源:互联网 发布:hexdump windows 编辑:程序博客网 时间:2024/06/05 09:36
from:http://blog.csdn.net/baijd_ss/article/details/6860315
- define FD_SETSIZE 1024
- typedef unsigned long fd_mask;
- #define NBBY 8 /* number of bits in a byte */
- #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
- #define howmany(x, y) (((x) + ((y) - 1)) / (y))
- typedef struct fd_set {
- fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
- } fd_set;
- #define _fdset_mask(n) ((fd_mask)1 << ((n) % NFDBITS))
- #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= _fdset_mask(n))
- #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~_fdset_mask(n))
- #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & _fdset_mask(n))
- #define FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
- #define FD_ZERO(p) bzero(p, sizeof(*(p)))
- fd_set master_set_read;
- FD_SET(600,master_set_read);
- => master_set_read->fds_bits[(600)/32] |= (1<<(600%32));
- 以上转自:http://blog.csdn.net/linuxchen/archive/2006/09/06/1137990.aspx
联系到《UNIX网络编程第一卷》 第六章 I/O 复用select和poll函数 第129页
是不是可以这样理解:
在调用select之前需要调FD_ZERO和FD_SET,完成初始化和相应的套接字在数组某个位被置为1;这是必须的--让select知道我们关心哪些套接字~!!!
如果select函数正常返回,如果某个套接字集合中没有准备好,可能会select内存用FD_CLR清该位为0;
如果select函数正常返回,如果调用FD_ISSET为真,既该位在数组中标志位为1,表示准备好~~~
所以,在select之前调用FD_SET------------:标志位设置为1,是为了让select知道哪些套接字是select需要关心的。
select返回后,没有准备好的描述字对应的位被清成0,准备好的套接字对应的位是1,这个时候标志位代表套接字准备好!!
还有就像上面那样:字节数组来实现位操作,是不是可以用来查找呢?尤其select第一个参数--最大描述字:是提高效率查找或匹配最好的诠释~~~!
0 0
- UNIX中select的实现和以及字节数组来实现位操作
- UNIX中select的实现和以及字节数组来实现位操作
- jquery 操作两个select 来实现值之间的传递
- 位运算实现反转字节和求二进制整数中1的个数(无循环)
- Unix网络编程(七)使用select来实现服务器的并发
- cpu亲和性(affinity)以及位数组内核的实现.
- Java中使用继承Ruannable来实现多线程的操作以及同步的使用
- C# 字节数组位操作
- Python实现64位整型主机字节顺序和网络字节顺序的转换
- Java中实现位操作
- 字节的位操作
- 用C语言数组实现位操作(位数组)
- Java中&&与&以及|| 与|的区别和位操作
- 实现select的全选和反选不选的操作
- 实现select的全选和反选不选的操作
- 位数组的简单实现
- 【Unix】标准化以及实现
- 用jquery实现cookie的操作以及创建js数组和遍历js数组,js对象,jquery.json的使用
- 设计模式初涉
- 创建对象在内存中,程序的执行过程
- v4l2
- java.sql.SQLException: Java exception: ': java.nio.channels.ClosedByInterruptException'.
- Solr4.5.1+tomcat8.0安装配置
- UNIX中select的实现和以及字节数组来实现位操作
- 条件变量 pthread_cond
- PCA的数学原理
- Codeforces Round #242 (Div. 2)
- 简约至上 C Plus Plus 的list 容器的学习
- 在MySQL中定义外键(转)
- 彻底解决CHECK_NRPE: Error - Could not complete SSL handshake.
- windows copy命令详解
- android Activity和Fragment生命周期实践