2017-08-08 325 views
0

在我的司機會打電話給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我應該如何避免它?

謝謝!

回答

0

如果您需要取消提交給共享隊列的工作條目,則可以使用cancel_delayed_work。

如果你要刷新共享工作隊列需要一個單獨的功能:

void flush_scheduled_work(void)