非阻塞socket与epoll

本文详细介绍了阻塞与非阻塞socket的区别,阻塞调用会导致线程挂起,而非阻塞调用则立即返回。非阻塞模式下,accept和recv等函数在没有数据时会返回错误。fcntl函数用于设置socket为阻塞或非阻塞状态。此外,文章还深入讲解了epoll系统调用,包括epoll_create、epoll_ctl和epoll_wait的使用,以及ET和LT两种工作模式。
摘要由CSDN通过智能技术生成
 阻塞socket
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。
对于文件操作read,fread函数调用会将线程阻塞
对于socket,accept与recv,recvfrom函数调用会将线程阻塞
对于socket,accept与recv,recvfrom函数调用会将线程阻塞
为了避免整个线程被阻塞后挂起,所以在阻塞模式下,往往需要采用多线程技术。
一个进程中可并发的线程总数是有限的,在处理大量客户端socket连接(比如上万client socket)通过线程并发处理socket并不方便,效率也不高。


非阻塞socket
非阻塞调用指调用立刻返回。
在阻塞模式下,accept与recv,recvfrom函数调用会立刻返回。
在nonblocking状态下调用 accept函数,如果没有客户端socket连接请求,那么accept函数返回-1,同时errno值为EAGIN或者EWOUDBLOCK,这两个哄定义都为整数11.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值