interruptible_sleep_on_timeout()睡眠超时设定

功能:使进程睡眠一定时间

原型:

#include <linux/wait.h>
long interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout);

说明:
在 q 指向的等待队列上注册当前运行中的进程信息,并使调用的进程进入睡眠状态。如果未满足苏醒条件,即使没有调用 wake_up_interruptible() 函数,只要超过设定的 timeout 值,进程也会自动苏醒。

变量:
q : 等待队列变量指针。
timeout : 依赖 Hz 的进程苏醒时间。2.6 内核中以 0.001s 为单位,2.4 内核中以 0.01s 为单位。
返回值:
进程唤醒时,取决于经历多少个 Hz 的时间,返回值的时间值为正数。

但现在出现一个这样的问题

interruptible_sleep_on_timeout(Wait_queue,6000) 在没有其他函数唤醒的情况下等待6s,但是这个函数会反复计数,比如等待10s后它会返回4s,相当于一直在这个函数上阻塞执行。

你可能感兴趣的:(interruptible_sleep_on_timeout()睡眠超时设定)