0

在 的手册页中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 应该是多少?

4

2 回答 2

3

“无限期”不是任意的,它是永远的。如果timeout指针是NULL,那么select将永远阻塞,或者直到其中一组中的文件描述符之一“准备好”。

于 2013-04-25T14:06:53.850 回答
0

不,“永远”等待不是一个好主意……如果拔下网络电缆,您的应用程序将冻结。您应该设置一个合理的超时时间(可能是几秒钟),以便在数据永远不会到达的情况下安全退出。

于 2013-04-25T14:15:00.103 回答