后端开发
工作队列 标签描述

  背景之前在触摸驱动(比如汇顶等)的代码里,会看到INIT_WORK等相关字眼,只知道是和工作队列相关,没有深入研究学习。最近在看蓝牙HCI相关代码中,又看到了INIT_WORK等,觉得工作队列(workqueue)需要好好看看,并记录下 工作队列通常用于将耗时工作滞后处理,比如中断处理的下半部耗时操作,等,中断相关的处理机制可见:《Kernel之中断处理底半部机制》。 最新的workqueue实现叫做CMWQ(ConcurrencyManagedWorkqueue),也就是用更加智能的算法来实现“并行和节省”。 Kernel:v5.4.18 几个概念很容易混淆的几个概念: wo...

线程池(ThreadPool)是一种线程管理机制,它维护了一组可重用的线程,用于执行多个任务。线程池在应用程序启动时创建一定数量的线程,并将它们放入池中,随后可以从池中获取线程来执行任务,执行完成后线程会返回池中等待下一个任务。 线程池的主要目的是提高线程的利用率和性能,避免频繁地创建和销毁线程,从而减少系统开销。通过重用线程,可以避免创建线程的开销,减少线程上下文切换的开销,并控制并发执行的线程数量,以防止系统资源耗尽。 线程池通常包含以下组件: 线程池管理器(ThreadPoolManager):负责创建和管理线程池,包括线程的创建、销毁和调度。 工作队列(WorkQueue):用于存...

Kernel之中断处理底半部机制[TOC] 主要记录一些整体的概念、框架和简单介绍,不涉及具体的原理和实现细节 背景查看系统相关中断: SHELLcat/proc/interrupts中断服务程序要求尽量短小精悍,耗时短。但现实情况是中断到来时,需要完成的工作会比较多,需要进行较大量的耗时处理。于是Linux将中断处理程序分成了2部分:顶半部(TopHalf)和底半部(BottomHalf)。但并不一定要分成2个部分,本来中断要处理的工作比较少,则完全没必要底半部,只需要顶半部就足够了。 顶半部主要用于处理一些尽量少的比较紧急的东西,比如紧急的硬件操作,清除中断标志,记录相应中断信息供底半部...