并发客户服务程序

并发客户服务程序
途径:
1.多进程
2.多线程
3.单进程和select函数使用
4.单进程和poll函数使用
我们这里只研究第三种。
下面先看一下select函数的使用。
int select(int nfds, fd_set *readfds, fd_set *writefds,
                  fd_set *exceptfds, struct timeval *timeout);
函数作用: select()允许一个程序监视多个文件描述符,直到一个或者多个文件描述符准备好了某种
I/O操作(比如,输入就绪)。文件描述符准备好(ready)的意思就是在这个描述符上可以无阻塞地执行有关的I/O操作。 
该函数监视三个独立的文件描述符集。列在readfds集合中的文件描述符将被监视是否读准备好了(read ready)。             
nfds:三个文件描述结合中最大的文件描述符+1
readfds:读文件描述符集合。
exceptfds:用于异常数据测试的文件描述符集。
writefds:写文件描述符集合。
timeout:函数调用时的超时指针。NULL,表示无限期。
三个指针都可为空。
相关宏:
FD_ZERO:初始化文件描述符集的每一位都为0。
    如:fd_set read_sockets;
        FD_ZERO(&read_sockets);
FD_SET:注册一个套接口。
        int c;//套接口描述符
        fd_set read_sockets;
        ...
        FD_SET(c,&read_sockets);
FD_CLR:与FD_SET相反。
FD_ISSET:测试文件描述符是否在集合中
        if (FD_ISSET(c,&read_sockets)) {
        //套接口c在read_sockets集合中
        } else {
        //不在
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值