2025年3月22日 星期六 甲辰(龙)年 月廿一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

C/C++ select精准定时器

时间:03-14来源:作者:点击数:48

1、select函数

  • int select (int __nfds, fd_set *__restrict __readfds,
  • fd_set *__restrict __writefds,
  • fd_set *__restrict __exceptfds,
  • struct timeval *__restrict __timeout);
  • 第一个参数nfds在Linux指的是highest-numbered的文件描述符+1,类型为int。在Windows下,这个参数可以忽略,可以是任意值。
  • 第二个参数__readfds是可选的,若不为null,select返回一个大于0的值,表示有文件可读;如果没有可读的文件,则根据timeout参数的值再判断是否超时,若超出timeout的时间,select返回0;若发生错误返回负值。
  • 第三个参数__writefds是可选的,若不为null,select返回一个大于0的值,表示有文件可写;如果没有可写的文件,则根据timeout参数的值再判断是否超时,若超出timeout的时间,select返回0;若发生错误返回负值。
  • 第四个参数__exceptfds是可选的,若不为null,select返回一个大于0的值,表示有异常发生在文件集合中;如果没有异常发生,则根据timeout参数的值再判断是否超时,若超出timeout的时间,select返回0;若发生错误返回负值。
  • 第五个参数__timeout是可选的,若不为null,则用来设置超时时间,则为等待的超时时间;若为null,则将select设置为阻塞状态,直到文件描述符集合中某个文件描述符发生变化时才会返回结果。

2、定时器

  • #define USLEEP(t) do \
  • { \
  • struct timeval tm = {0, t}; \
  • select(0, NULL, NULL, NULL, &tm);\
  • }while(0);
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门