异步任务执行:workqueue与taskwork

news/2024/11/18 3:00:03/

workqueue

workqueue就是用来异步执行逻辑的内核组件。异步执行是很常见的需求,workqueue组件为异步执行抽象出三个概念: · work:指需要异步执行的任务 · woker:处理work的异步执行上下文,就是一个内核线程 · workqueue:work的链表,异步执行需求者产生work,将work加入到workqueue。worker从workqueue中获得需要执行的work列表进行执行
使用workqueue的一般流程如下:

  1. 调用alloc_workqueue()创建workqueue,或者直接使用系统已经创建好workqueue
  2. 创建work(struct work_struct),并使用INIT_WORK进行初始化
  3. 调用queue_work_on函数将work放入workqueue
    要区别作为整个组件的名字的workqueue和作为workqueue组件中的工作队列的workqueue队列。workqueue被创建出来描述了队列的属性,不同属性的队列需要匹配不同的worker来实际的执行。

worker pool

worker被组织为线程池,线程池中的每个线程都是一个worker,没有work需要执行的时候线程池的线程数量大部份情况为0,有work需要执行的时候才会动态的创建worker线程来执行。这种worker线程池叫做worker pool。worker线程的数量由worker pool控制,对于使用者是无感知的。

系统中不止存在一个worker pool,每个worker pool都有一个优先级和运行的CPU列表两个属性,属性结构体定义如下:


http://www.ppmy.cn/news/8377.html

相关文章

周赛326总结

周赛326总结 感谢力扣,第一次全部做完,耗时43分37秒,很满足了,虽然是题比较简单,新的一年继续努力呀!! 计能整除数字的位数 Given an integer num, return the number of digits in num that …

Leetcode 36. 有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)注意…

pycharm-qt5-designer1

pycharm-qt5-designer1一: designer界面介绍1. 新建模板二: 控件箱简介1. Layouts 布局2. Spacers 间隔(透明)3. Button4. Item views5. Item Widgets 条目控件6. Containers 容器7. input Widgets 输入控件8. Display Widgets 显示控件三: 控件属性简介1. sizePolicy: 控件大小…

我用Python做了个动图生成器,把一千个MM生成了GIF设置桌面,只为每天愉悦心情

文章目录序言代码实战序言 现在的年轻人都开始每天保温杯里泡枸杞,这怎么能行呢? 想要每天过的好,美女必然少不了,每天看美女,只为了愉悦心情,心情好了,才长寿。 于是怀揣着愉悦心情的想法&am…

图像简单运算

图像运算是以图像为单位对图像进行数学操作,运算对象以像素点为基本单位,运算结果为一幅灰度分布与原图像不同的新图像。 算术运算与逻辑运算 算术运算与逻辑运算中每次只涉及一个空间像素的位置,所以可以”原地操作“(在&#xf…

【博学谷学习记录】大数据课程-学习第一周总结

Linux服务器 对于Linux操作系统来说,其本身是一个整体,包括Linux内核、系统库和系统程序,Linux内核是其最基础的部分,它实现了对硬件资源的管理,并且提供了使用这些硬件资源的通用接口。 自1991年发布Linux内核来&…

【软件质量】软件质量分析总结报告

软件质量-----“软件与明确地和隐含地定义的需求相一致的程度” 一、质量的概念 Ⅰ、传统的质量概念:产品性能是否符合技术规范 Ⅱ、质量是一组固有特性满足要求的程度 Ⅲ、适用性质量 Ⅳ、质量不仅指产品质量,也指过程和体系的质量 二、软件质量 Ⅰ、产品质…

ElasticSearch笔记

ELASTICSEARCH笔记 1、安装elastic search dokcer中安装elastic search (1)下载ealastic search和kibana docker pull elasticsearch:7.6.2 docker pull kibana:7.6.2(2)配置 mkdir -p /mydata/elasticsearch/config 创建目…