schedule_delayed_work和queue_delayed_work
时间: 2023-09-02 08:07:02 浏览: 237
`schedule_delayed_work`和`queue_delayed_work`都是Linux内核中的函数,用于安排延迟执行的工作。
`schedule_delayed_work`是将一个已经初始化的工作放入工作队列中,并指定一个延迟时间,到达延迟时间时工作将被执行。这个函数的原型为:
```c
int schedule_delayed_work(struct delayed_work *work, unsigned long delay);
```
其中,`work`是一个指向已经初始化的`delayed_work`结构体的指针,`delay`是延迟时间,单位为Jiffies。Jiffies是内核中的一个时间单位,通常是1毫秒。
`queue_delayed_work`也是将一个已经初始化的工作放入工作队列中,但是不指定延迟时间,而是指定一个时间戳,工作将在到达这个时间戳时被执行。这个函数的原型为:
```c
int queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay);
```
其中,`wq`是一个指向工作队列的指针,`work`是一个指向已经初始化的`delayed_work`结构体的指针,`delay`是时间戳,指定工作执行的时间,单位为Jiffies。
需要注意的是,这两个函数都是将工作放入工作队列中,而不是立即执行工作。因此,它们并不保证工作一定会在指定的时间执行,而是在到达指定时间后,当内核空闲时才会执行。
阅读全文