- 论坛徽章:
- 0
|
#include <stdio.h>
#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
struct timeval tv;
tv.tv_sec = 0; <=== s
tv.tv_usec = 500000; <=== us
for (int i = 0; i < 10; i++) {
//Sleep(tv.tv_usec / 1000);
printf("%dn", select(0, NULL, NULL, NULL, &tv));
printf("errno:%dn", errno);
//sleep(1);
cout<<123<<endl;
}
exit(0);
}
如果(A)s=1, us=0,在Linux上可以正常睡1秒显示一行
但是(B)s=0, us=1000000; (C)s=0, us=999999在Linux都不行
(B); (C)在HP-UX和Solaris上可以
在Linux上除了使用信号和pselect(因为在HP-UX和Solaris上好像没有pselect)还有什么简单办法能实现毫秒、甚至微秒级的睡眠函数吗? |
|