很多时候我们用select来模拟sleep取代sleep。用以实现线程安全的毫秒级别的延时。
代码如下:
void My_sleep(int secs)
{
struct timeval time;
time.tv_sec=secs/1000;
time.tv_usec=(secs*1000)%1000000;
select(0,NULL,NULL,NULL,&time);
}
但是需要注意的是 select函数的第四个参数是 in/out的。使用的时候需要每次都赋值,不然经过一次睡眠后值变为0。像上面的写法才正确 每次都赋值一次。