如何立即取消queue_delayed_work?
问题描述:
在我的司机会打电话给queue_delayed_work和做的事情,如何立即取消queue_delayed_work?
queue_delayed_work(queue, work, 60000);
然后停止一些条件后,该队列:
cancel_delayed_work_sync(work);
flush_delayed_work(work);
flush_workqueue(queue);
与劳动者功能:
static void worker(struct work_struct *work) {
printk("this is worker function!\n");
...
queue_delayed_work(queue, work, 60000);
}
但我发现,工作人员功能仍然可以在我停止工作队列后触发(取消并刷新)
这是怎么发生的nd我应该如何避免它?
谢谢!
答
如果您需要取消提交给共享队列的工作条目,则可以使用cancel_delayed_work。
如果你要刷新共享工作队列需要一个单独的功能:
void flush_scheduled_work(void)