gpt4 book ai didi

linux - 唤醒或删除workqueue linux内核的工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:02 24 4
gpt4 key购买 nike

我有一个工作队列的工作,在他的函数中有一个 msleep()。是否有一些功能可以唤醒工作或删除它而不等待它完成 sleep ?或者在作品中是否有相同的延迟功能可以中断?非常感谢。

最佳答案

如果当前正在执行工作,则不能在未完成之前就停止。通常情况下,msleep()可以被wake_up_process(task)打断,但是从外面看,你并不知道workqueue执行的进程(task)。

如果你想让你的工作暂停在外面是可中断的,你应该使用wake_up-aware函数。例如,wait_for_completion_timeout:

DECLARE_COMPLETION(comp);

void work_func(struct work* work)
{
...
// sleep for *m* miliseconds
if(wait_for_completion_timeout(&comp, msecs_to_jiffies(m)))
{
// sleep has been interrupted
}
...
}

some_func()
{
...
// No futher needs to work
complete(&comp);
}

请注意,*_timeout 函数使用 jiffies 作为计数间隔。

关于linux - 唤醒或删除workqueue linux内核的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com