如何立即取消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)