我为什么要使用select函数延时呢,是因为我在主线程外又开了两个线程来接收CAN通信的数据,线程里面用的while死循环,但是发现can接收的数据很不正常,经常是一段时间收不到,一段时间收到很多,而且很小的程序cpu占用率很高,有大佬说可能是主线程的死循环一直在运行,导致其他进程没有机会插入,所以需要在死循环里加入一段小延时。
使用sleep()和usleep()的确可以达到效果,但是使用这类延时可能会导致系统产生未知问题,所以使用了select函数,而且select的延时作用精度足够高,可以达到微秒级(但是实际使用发现有1ms左右的延时,不知道什么原因,但对我影响不大)
select函数的使用也足够简单 只需要几行代码
#include“time.h”
#include "sys/select.h"//必须调用这俩头文件
struct timeval tv;//声明一个timeval类型的对象tv
tv