首页 > 其他分享 >12 workqueue

12 workqueue

时间:2023-03-19 16:56:58浏览次数:43  
标签:12 struct work 线程 内核 workqueue type

代码

编程指南

  • 构造workqueue
  • 将workqueue放入队列,开始调度

1 工作机制

内核线程(while(1))中对去判定是否存在workqueue;如果不存在择休眠;

如果存在workqueue则等待wake up事件唤醒workqueue,然后执行workqueue中的fun

1.1 内核线程的创建

每一个CPU将会创建两个worker_pool;一个普通优先级,一个高优先级

每个worker_pool下创建一个内核线程

引用百问网的图片

workqueue在内核线程中并不是固定捆绑在某个内核线程中的。它会随着系统动态变化的

2 常用API和数据结构

2.1 work_struct

struct work_struct {
	atomic_long_t data;
	struct list_head entry;
	work_func_t func;
#ifdef CONFIG_LOCKDEP
	struct lockdep_map lockdep_map;
#endif
};

2.2 INIT_WORK

初始化work_struct

#define INIT_WORK(_work, _func)

2.3 schedule_work

将workqueue放入队列,并唤醒内核线程对齐进行调度

3 相关知识点

  • container_of

    通过member的地址(ptr),退到出type的首地址

    #define container_of(ptr, type, member) ({              \         
    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \         
    (type *)( (char *)__mptr - offsetof(type,member) );})
    

标签:12,struct,work,线程,内核,workqueue,type
From: https://www.cnblogs.com/burnk/p/17233563.html

相关文章

  • 华为认证H12-821题库(带解析且包更新)
    1、​(单选题)下面关于0SPF的特殊区域,描述错误的是:60084943A.   ​​TotallyStubArea允许ABR发布缺省的三类LSA,不接受五类LSA和细化三类LSA​​A.   ​​NSSAAre......
  • 【230319-4】三角形ABC中,AB=2,AC=4,∠A=120°。求:BC长度?
    ......
  • Error:java:无效的源发行版:12
    问题描述:程序无法运行,无效的源发行版:12错误。使用idea运行项目的时候,报出错误:无效的源发行版:XXX,这是因为idea设置的jdk版本和运行的项目版本的jdk版本号不匹配。如果项目j......
  • Error:java:无效的源发行版:12
    问题描述:程序无法运行,无效的源发行版:12错误。使用idea运行项目的时候,报出错误:无效的源发行版:XXX,这是因为idea设置的jdk版本和运行的项目版本的jdk版本号不匹配。如果项目j......
  • Error:java:无效的源发行版:12
    问题描述:程序无法运行,无效的源发行版:12错误。使用idea运行项目的时候,报出错误:无效的源发行版:XXX,这是因为idea设置的jdk版本和运行的项目版本的jdk版本号不匹配。如果项目jd......
  • Error:java:无效的源发行版:12
    问题描述:程序无法运行,无效的源发行版:12错误。使用idea运行项目的时候,报出错误:无效的源发行版:XXX,这是因为idea设置的jdk版本和运行的项目版本的jdk版本号不匹配。如果项目jd......
  • 【RabbitMQ消息中间件】12.RabbitMQ结合SSM框架-编写仓储系统
    了解了RabbitMQ的基本知识和几大队列模式,以及Spring-Rabbit开源工程的基本原理后,我们动手来实现在实际工作开发中需要与SSM框架结合使用的工程场景。该......
  • 题解:【ARC112C】 DFS Game
    题目链接题目里面的注意点还是很多的,如果读错了题整个思路可能会一点都不对。首先是移动和选取硬币的操作是分开的,所以你移动到了一个有硬币的节点,将是你的对手获得硬币。......
  • SpringAll(1-12)复习
    1-12复习详细解释Thymeleaf月springboot的关系Thymeleaf是一个现代化的Java模板引擎,它允许开发人员使用自然模板语言来创建动态网页。而SpringBoot是一个快速开发框架,它......
  • 代码随想录18 513.找树左下角的值 | 112. 路径总和 113.路径总和ii | 106.从中序
    513. 找树左下角的值给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出......