setTimeOut等效于c?

moh*_*ain 1 c sockets pthreads

我正在研究一个pthread多线程代码,每个线程都在文件描述符上调用read().read()是一个阻塞调用,因此它等待数据.但我希望它只等待3秒才能等待数据.

我想过使用alarm()和hadling SIGALRM,但如果我在一个线程中发出警报,所有线程都会得到SIGALRM信号,所有线程都会放弃读取.我该怎么做?

Mat*_*Mat 5

使用该select呼叫.它有一个参数允许您指定超时.

Linux手册页select有一个示例用法,你可以在这里和网上的其他地方找到很多例子.

如果您不担心便携性,那么有更多现代/功能丰富的选择.

您可能希望查看库以抽象出所有这些.libevent值得一看,并且包含了大多数上面特定于操作系统的接口.