poll 阻塞 设置

poll(fds, 1, 0) 在这里是一个阻塞调用,尽管超时设置为0。在Linux中,poll函数的行为如下:

当超时设置为-1时,poll会无限期地等待,直到至少有一个文件描述符变得可读、可写或有异常状况,或者直到接收到一个信号。
当超时设置为一个正整数N时,poll会等待最多N毫秒。如果在N毫秒内没有文件描述符变得可用,poll会返回0。
当超时设置为0时,poll会立即返回,不会阻塞。但是,如果此时正好有文件描述符是就绪的(即满足poll之前设置的事件),poll会返回并报告这些文件描述符。
因此,对于poll(fds, 1, 0)这个调用,它不会阻塞等待文件描述符变得可用。它会立即返回,并告诉你是否有文件描述符在调用poll的那一刻就已经是就绪的。如果没有文件描述符就绪,poll会返回0。

然而,这并不意味着整个操作是非阻塞的。你仍然需要在调用poll之后检查返回的结果,并根据返回的文件描述符状态进行读取或写入操作。如果文件描述符是设置为非阻塞模式的,那么读取或写入操作本身也可能是非阻塞的。但如果文件描述符是阻塞模式的,读取或写入操作可能会阻塞。

所以,poll(fds, 1, 0)本身是非阻塞的(因为它不会等待),但是后续的文件操作可能是阻塞的或非阻塞的,这取决于文件描述符的设置。如果你想要整个操作都是非阻塞的,你需要确保文件描述符本身也是设置为非阻塞模式的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值