[英]can _sync_val_compare_and_swap return anything other than int?
[英]How would select() return anything other than -1, 0, or 1?
这对我来说绝对只是一个愚蠢的误解,但是 select() 的手册页指出:
timeout 参数指定 select() 应阻止等待文件描述符准备就绪的时间间隔。 调用将阻塞,直到:
*文件描述符准备就绪;
*调用被信号处理程序中断; 或者
*超时到期。
而且,那
成功时,select() 和 pselect() 返回三个返回的描述符集中包含的文件描述符的数量(即在 readfds、writefds、exceptfds 中设置的总位数),如果超时到期可能为零在任何有趣的事情发生之前。 出错时返回-1,设置errno表示出错; 文件描述符集未修改,超时未定义。
所以我的问题是——如果它在文件描述符准备好后立即停止阻塞,它会不会立即返回 1? 如果没有 fds 准备好,则返回 0,否则返回错误并返回 -1。
显然在实践中它返回超过 1:重点是你应该能够读/写多个 fds,对吧?
由于现代抢占式多任务的工作方式,多个描述符可能会在您的进程被唤醒之前准备就绪,并且select
调用对描述符进行计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.