当前位置: 技术问答>linux和unix
求 思路 信号量控制函数中的线程sleep 100微秒。(linux)
来源: 互联网 发布时间:2016-08-03
本文导语: 如题。问题棘手请大家多帮忙。先谢谢了。 | 1. 对。用select,设置超时时间为 100 ms. 2. 或者用: /* BSD version */ #include void usleep(unsigned long usec); /* SUSv2 ...
如题。问题棘手请大家多帮忙。先谢谢了。
|
1. 对。用select,设置超时时间为 100 ms.
2. 或者用:
/* BSD version */
#include
void usleep(unsigned long usec);
/* SUSv2 version */
#define _XOPEN_SOURCE 500
#include
int usleep(useconds_t usec);
2. 或者用:
/* BSD version */
#include
void usleep(unsigned long usec);
/* SUSv2 version */
#define _XOPEN_SOURCE 500
#include
int usleep(useconds_t usec);
|
第二种方法也不是一个好选择,如果你的程序在usleep的时候收到了一个信号,那么usleep就被中断了,所以你需要去usleep剩下的时间,可问题是,剩多少时间usleep并没有返回。所以无法保证可靠性
|
这个你是看不到现象的,因为线程1阻塞执行后就直接退出了。所以不会再执行->阻塞
|
更正:
1. 对。用select,设置超时时间为 100 us.
1. 对。用select,设置超时时间为 100 us.
|
用select是做不到精确sleep 100uS的,
下面是猜的,没有试验,select伴随了进程切换,进程从挂起再到调度回来,这个时间可能就已经超过了100US了,
下面是猜的,没有试验,select伴随了进程切换,进程从挂起再到调度回来,这个时间可能就已经超过了100US了,
|
用select? 100微秒的比较精确~