`
isiqi
  • 浏览: 16673626 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

events/0--工作者线程

阅读更多

今天在“top”时无意中发现每次都会出现一个events/0进程。

网上貌似很少对它的描述,总结一下《Linux内核设计与实现》中的内容(page87)。

我们都知道中断的底半部机制有三种:软中断、tasklet和工作队列。其中软中断很少使用,内核中只有网络在使用,它的延时是最小的。

tasklet是软中断的一个应用,所有线程注册的tasklet都会顺序被执行。因此tasklet的执行环境是软中断上下文,所以不能阻塞或者睡眠。一般情况下,tasklet的延迟也很小,可以满足大部分需求。

要是底半部中可能睡眠,那么只好使用工作队列了。工作队列其实是把要做的底半部的函数交给内核的专门线程去调用。这样工作队列就运行于线程环境了,不怕睡眠。当然,睡眠会影响注册到同一线程的其它底半部的执行,但不会引起大的问题。每个CPU都有一个线程(events/n,n是编号)负责执行工作队列,第一个CPU的线程是events/0,如果是双核的,还会有一个events/1线程。

我的程序使用了工作队列,所以每次执行都会多出一个events/0(第一个CPU上工作线程)。

分享到:
评论

相关推荐

    linux下nginx的安装

    最后,对于初学者,理解Nginx的工作原理和配置结构是至关重要的。Nginx使用事件驱动模型,通过多进程或线程处理请求,提高了处理效率。其配置文件由多个部分组成,包括全局块、events块、http块、server块和location...

    preact-worker-demo, 在网络工作者中,preact渲染整个应用程序的演示.zip

    preact-worker-demo, 在网络工作者中,preact渲染整个应用程序的演示 :一个完整的 Preact服务器端应用程序呈现,在一个网络工作环境中 你是否曾经想过能否利用Web工作者在后台线程中呈现虚拟DOM应用程序?...

    JAVA_API1.6文档(中文)

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

    Events-Presentation-Group:事件演示组的组存储库-21921上的演示

    标题中的“Events-Presentation-Group”很可能是一个项目或者团队的名称,他们专注于事件处理和演示相关的技术工作。这个“组存储库”可能是指一个代码仓库,比如GitHub或GitLab,用于存储他们的源代码和相关资源。...

    C_threads_events_delegate_instance.rar_delegate_threads_线程委托

    在C#编程中,线程(threads)、事件(events)和委托(delegates)是构建多线程应用程序和实现异步编程的关键概念。本压缩包文件"ydaima"可能包含一些示例代码或教程,旨在帮助理解这些概念在实际应用中的工作方式。...

    多线程编程模型API

    - **生产者消费者模型**(Chap6, Chap7):这是一个经典的多线程问题,涉及到如何在不引入数据竞争的情况下平衡生产者和消费者的速率。 - **基于select的I/O模型和多线程文件下载**(Chap8):select函数用于监听多...

    第20章 Python多线程编程.pdf

    Python多线程编程是一种允许程序同时执行多...总的来说,Python多线程编程适合进阶型学习者,它要求开发者不仅要理解线程的工作原理,还要掌握如何正确使用`threading`模块提供的工具,实现高效且线程安全的程序设计。

    java api最新7.0

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

    一个ftp服务器源码,很不错的东西

    //工作者线程处理函数 UINT ProcessTreadIO(LPVOID lpParameter) { DWORD dwFlags; LPSOCKET_INF pSI; DWORD dwBytesTransferred; DWORD i; CServer * server=(CServer*)lpParameter; //处理异步的WSASend, ...

    精通Linux设备驱动程序开发-第三章-内核组件.pdf

    而`[events/0]`是工作队列的执行者,用于延后执行任务,提高系统的响应性和效率。此外,还有`[pdflush]`负责管理页缓存中的脏页写回,以及`[kjournald]`作为日志记录线程,服务于文件系统日志功能。 #### 工作队列...

    JavaAPI1.6中文chm文档 part1

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

    向线程发送消息和组合键

    3. **工作线程处理消息**:在工作线程中,你需要先调用`Looper.prepare()`初始化Looper,然后调用`Looper.loop()`开始消息循环。在`handleMessage()`方法中,你可以根据消息`what`来处理来自主线程的消息。 安卓...

    [Java参考文档]

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

    JavaAPI中文chm文档 part2

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

    JDK_1_6 API

    javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform 此包定义了用于处理转换指令,以及执行从源到结果的转换的一般 API。 javax.xml.transform.dom 此包实现特定于 DOM 的转换 ...

    qt安装过程和知识

    ### Qt安装过程与核心知识点详解 #### 一、Qt安装过程概述 Qt 是一款非常强大的跨平台 C++ GUI 库,被广泛应用...了解 Qt 的安装过程和核心知识点对于初学者来说至关重要,这将有助于快速上手并进行高效的开发工作。

    [Java参考文档].JDK_API 1.6

    javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border 提供围绕 Swing 组件绘制特殊边框的类和接口。 javax.swing.colorchooser 包含供 ...

Global site tag (gtag.js) - Google Analytics