[英]let the system call `select()` block until a socket gets something to read
在select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
的手册页中说:
If timeout is a null pointer, the select blocks indefinitely.
无限期意味着一个具有任意长度的周期吗?
让线程在select()
处阻塞直到套接字获取一些数据好吗? 如果是这样,*超时应该是什么?
“无限地”不是任意的,它是永远的。 如果timeout
指针为NULL
,则select
将永远阻塞,或者直到其中一组中的文件描述符之一“就绪”为止。
不,“永远”等待不是一个好主意...如果拔下网络电缆,您的应用程序将冻结。 您应该设置一个合理的超时时间(可能是几秒钟),以便万一数据无法到达就可以安全退出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.