运行这样一个测试程序(书上的原样程序):
[code]
#include
by xb_parasite - C/C++ - 2007-01-19 11:20:34 阅读(3112) 回复(3)
我程序里的sleep(1), 停1秒,由于程序比较大,使多个sleep(1)影响了速度。 想要换成比一秒小的时间间隔,找到了函数nanosleep(),它可以处理纳苗级的时间。但在SCO Unix 里编译 struct timespec slptm2 ;这个结构时报错: test.c", line 22: error: incomplete struct/union/enum timespec: slptm2 makefile 用的 cc -o 但在SCO 下是支持 struct timeval tstart 的。 我查了两个时间结构的区别: timespec{ 域1,秒 域2,纳秒...
我用gettimeofday -> nanosleep -> gettimeofday 这样的过程估算nanosleep 产生延迟的精度,因为 有中断(10ms),基本都是1s多1-2ms的样子,既然每10ms 产生一个中断,我开始猜测是分散在1s - 1.01s 我测一个很大样本,但是总是存在最小1ms的误差(1.001s - 1.002s),我理解这个最小的误差是gettimeofday被调用时候自身产生的time cost, 可是不该这么大啊,应该是在usec级别才对 哪位高手帮忙解释一下 谢谢
nanosleep函数会挂起调用的thread一段时间,在其manual中说,它能提前return, 当接收到一个signal时 请问,该发什么signal让它提前返回? 谢谢
测试 IBM AIX 3.4 单CPU sleep 可以在多线程中使用,只阻塞本线程,不影响所属进程中的其它线程 不支持 nanosleep 支持 usleep 和 select 以下采用 gettimeofday 对 usleep 和 select 的实际精确情况进行测试分析 function time(usec) realTime reduce ------------------------------------------------------------------- usleep 500000 500026 26 nanosleep ...
ffffffff7ddcd390 nanosleep (ffffffff7fffd800, 0) 000000010006ae84 mmsg_expired_get_run_cpu_pef (466de890, 0, ffffffff7df02000, 0, 51, ffffffff7b90043 + 3c4 000000010006afb4 mmsg_expired_update_cpu_state (466de890, 0, ffffffffffffffff, fffffffffffffff8, ffffffffffffffe0, ffffffff7fffdc91 ) + 10 0000000100067a88 mmsg_expired_msg (0, 1, 2710, 0, 0, 0) + 58 0000000100068f30 mmsg_expired_timeout_func (...
ffffffff7ddcd390 nanosleep (ffffffff7fffd800, 0) 000000010006ae84 mmsg_expired_get_run_cpu_pef (466de890, 0, ffffffff7df02000, 0, 51, ffffffff7b900438) + 3c4 000000010006afb4 mmsg_expired_update_cpu_state (466de890, 0, ffffffffffffffff, fffffffffffffff8, ffffffffffffffe0, ffffffff7fffdc91 ) + 10 0000000100067a88 mmsg_expired_msg (0, 1, 2710, 0, 0, 0) + 58 0000000100068f30 mmsg_expired_timeout_...