用select实现精确到睡眠时间小于1秒的sleep函数

/*精确度为0.001秒的sleep函数*/
#include
#include
#include
#include
#include
#include
 
void sleep_1(unsigned int secs)
{
  struct timeval tval;
  tval.tv_sec=secs/1000;
  tval.tv_usec=(secs*1000)%1000000;
  select(0,NULL,NULL,NULL,&tval);
}
 
// 例如:调用sleep_1(500)时,表示睡眠0.5秒
//如果你觉得睡眠1秒时间太长,可以用此方法
//当然,如果你想要更精确的时间控制,可以进行修改:
/*
    tval.tv_sec=secs/1000000;
    tval.tv_usec=secs%1000000;
   
    精确度为1微秒(0.000001秒)
*/
 
轮循: 一个无限循环..select最后一个参数 设置的很小 毫秒或者几秒的等待 有描述符准备好 则处理 继续循环.没有描述符准备好就结束.继续循环.

你可能感兴趣的:(用select实现精确到睡眠时间小于1秒的sleep函数)