本文转自如何使用queue_delayed_work函数
1. delayed_workqueue主要用在需要延迟处理任务的驱动中,这些驱动的特性主要是不能使用中断。
delayed_workqueue的使用步骤如下:
   1) 定义workqueue要做的delayed工作:struct delayed_work mdelayed_work;
   2) 定义workqueue: struct workqueue_struct *mworkqueue; 
   3) 初始化workqueue:INIT_DELAYED_WORK(mworkqueue, mdelayed_work);
   4) 创建线程queue并加以名字:mworkqueue = create_singlethread_workqueue("myqueue");
   5) 运行queue:queue_delayed_work(mworkqueue, mdelayed_work, delay_time);
注:如果要实现循环实行任务,可以在在delayed_work中将delayed_workqueue再次添加到queue中,即在delayed_work中调用queue_delayed_work。
2.举例分析:
运行结果:
从例子可以看出当工作队列还在执行该任务,调用queue_delayed_work()返回1,否则返回0。
主线程mwq将任务添加到工作队列后,使得工作队列在延迟delay后执行函数delay_work_func(),而mwq线程继续执行;
转载请注明本文转自如何使用queue_delayed_work函数,谢谢。
05-07 15:51