美文网首页
读书笔记:LLD3(5)tasklet 和工作队列

读书笔记:LLD3(5)tasklet 和工作队列

作者: rlkbk | 来源:发表于2016-04-16 00:03 被阅读0次

tasklet:调度一个tasklet,表明我们只是希望内核选择某个其后的时间来执行调度的函数。与定时器类                 似,tasklet也会在“软件中断”上下文以原子模式执行。

tasklet API:

#include <linux/interrupt.h>

struct tasklet_struct{

         /* ... */

        void (*func)(unsigned long);

        unsigned long data;

};

void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data);

DECLARE_TASKLET(name, func, data);

DECLARE_TASKLET_DISABLED(name, func, data);

tasklet提供的特性

一个tasklet可在稍候被禁止或者重新启用;只有启用次数和禁止次数相同时,tasklet才会被执行。

和定时器类似,tasklet可以自己注册自己。

tasklet可被调度以在通常的优先级或者高优先级执行。高优先级的tasklet总会首先执行。

如果系统负荷不重,则tasklet会立即得到执行,但始终不会晚于下一个定时器滴答。

一个tasklet始终会在调度自己的同一个CPU上运行。

工作队列:

工作队列类似于tasklet,它们都允许内核代码请求某个函数在将来的时间被调用。

与tasklet的区别:

tasklet在软中断上下文中运行,因此,所有的tasklet代码都必须是原子的。相反,工作队列函数在一个特殊内核进程的上下文中执行,因此它具有更好的灵活性。尤其可以休眠。

tasklet始终运行在被初始提交的同一处理器上,但这只是工作队列的默认方式

内核代码可以请求工作队列函数的执行延迟给定的时间间隔。

相关文章

  • 读书笔记:LLD3(5)tasklet 和工作队列

    tasklet:调度一个tasklet,表明我们只是希望内核选择某个其后的时间来执行调度的函数。与定时器类 ...

  • Linux内核工作队列

    Linux内核中实现工作推后执行的方法有:软中断、tasklet和工作队列(work queue)。 本文介绍工作...

  • Linux内核中的软中断、tasklet和工作队列详解

    软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bott...

  • tasklet

    tasklet 1、tasklet可以动态分配,也可以静态分配,数量不限。2、同一种 tasklet 在多个cpu...

  • 时间、延迟与定时器

    1、内核计数器 时间戳计数器(TSC) 2、延迟 3、内核定时器 4、tasklet(小任务) 5、工作...

  • 5 工作队列

    1 图解 2 代码 3 代码介绍 3.1 引入必须依赖 3.2 获取MQ连接 3.3 消息消费者1 3.4 消息消...

  • 每天一点Swift(七)GCD

    1.在其他队列里面执行函数 2.主队列更新UI,其他队列做耗时工作 3. 创建并行队列 4.创建串行队列 5.延迟

  • 5 堆和优先队列

    定义 优先队列:priority queue 取出元素的顺序是依据元素的优先权大小,而不是元素进入队列的先后顺序两...

  • Chapter 5栈和队列

    栈和队列的实现【转】https://www.cnblogs.com/yiduobaozhiblog1/p/9272...

  • 队列 - queue

    1. 顺序存储 在使用队列时,我们使用两个变量表示队列的头和尾。 以长度为5的顺序队列为例: 开始队列头Q.fro...

网友评论

      本文标题:读书笔记:LLD3(5)tasklet 和工作队列

      本文链接:https://www.haomeiwen.com/subject/uninlttx.html