您的位置:首页 > 其它

工作队列使用碰到的问题

2018-02-18 21:59 225 查看
1,任务被覆盖


2,如何传参

3, 如何判断队列 或者任务是否存在(牵扯到资源回收)

1,对于自己创建的队列,使用:

if (dev->workqueue)判断

2,对于缺省的队列,

不需要判断队列,如果该队列中的task有wehil(1),先退出这个while,然后退出调度,即可。不可以杀除缺省的队列

cancel_work_sync(&nim_dev->debug_work);

4,同一个任务可以挂在两个队列上去执行吗?

可以,但是这个任务必须是可重入的

schedule_delay_work:

日内瓦团队认为:schedule_work 最好不要用while循环?而要用schedule_delay_work?

这不一定对吧

还碰到一个奇怪的例子:

一般工作队列中的task如果需要一直工作下去,都会使用一个while(1)去循环着,只要让出时间片即可。

但是现在看到有一种很奇特的做法,不用while(1)去保证循环,而是在task的结尾再次schedule_delayed_work这个task本身。

这样不断的进入这个task来保证持续的完成这个task
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: