当前位置: 技术问答>linux和unix
关于毫秒级延时和sizeof的问题
来源: 互联网 发布时间:2014-12-01
本文导语: 一、usleep和select的文档上都写着可以进行毫秒级的延时, 但是我实际测试发现前者最短只能延时20ms,后者可以到10ms 有没有可以做到1毫秒延迟得方式? 二、我定义了一个数据结构 typedef struct{ long c; s...
一、usleep和select的文档上都写着可以进行毫秒级的延时,
但是我实际测试发现前者最短只能延时20ms,后者可以到10ms
有没有可以做到1毫秒延迟得方式?
二、我定义了一个数据结构
typedef struct{
long c;
short a;
char b;
} PACKET;
结果sizeof(PACKET)的值为12,我不明白为什么,是不是都向long取齐了?
但是我实际测试发现前者最短只能延时20ms,后者可以到10ms
有没有可以做到1毫秒延迟得方式?
二、我定义了一个数据结构
typedef struct{
long c;
short a;
char b;
} PACKET;
结果sizeof(PACKET)的值为12,我不明白为什么,是不是都向long取齐了?
|
结构的size是和编译器的设置相关的。有按字节对齐、按字、按双字对齐的。所以有时候换一换成员的顺序就会对结构的size造成影响。
好像borland的#pragma package n是用来控制这个的,vc就不知道了
据说,奔腾II以上,对双字对齐运算最快,不是空间有限制是不需要强制按字节对齐的。
好像borland的#pragma package n是用来控制这个的,vc就不知道了
据说,奔腾II以上,对双字对齐运算最快,不是空间有限制是不需要强制按字节对齐的。
|
因为linux的“心跳”只有100/s,所以select之可以定时到10ms级,加上你的操作还要时间,所以...
如果你需要微秒级的定时,udelay,但是因为基于机器速度,假如机器太快,不要延时太久,以防止溢出,可以如下:
for(i=0;i
如果你需要微秒级的定时,udelay,但是因为基于机器速度,假如机器太快,不要延时太久,以防止溢出,可以如下:
for(i=0;i