概述 在JAVA的世界里,如果想并行的执行一些任务,可以使用ThreadPoolExecutor。 大部分情况下直接使用ThreadPoolExecutor就可以满足要求了,但是在某些场景下,比如瞬时大流量的,为了提高响应和吞吐量,最好还是扩展一下ThreadPoolExecutor。 全宇宙的JA ...
分类:
其他好文 时间:
2018-04-01 16:05:57
阅读次数:
145
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePool ...
分类:
编程语言 时间:
2018-03-27 02:02:54
阅读次数:
192
线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueue<Runnable>workQueue,RejectedExecutionHandle
分类:
编程语言 时间:
2018-03-22 22:35:26
阅读次数:
162
工作队列是进程上下文,可以休眠。系统默认的工作者线程为events,也可以创建自己的工作者线程。1. 工作\工作队列\工作者线程关系 推后执行的任务叫作工作,work_struct工作以队列结构组织成工作队列(workqueue),workqueue_struct工作线程就是负责执行工作队列中的工作 ...
分类:
其他好文 时间:
2018-03-10 14:11:46
阅读次数:
167
一、前言 workqueue是一个驱动工程师常用的工具,在旧的内核中(指2.6.36之前的内核版本)workqueue代码比较简单(大概800行),在2.6.36内核版本中引入了CMWQ(Concurrency Managed Workqueue),workqueue.c的代码膨胀到5000多行,为 ...
分类:
其他好文 时间:
2018-02-21 23:05:16
阅读次数:
206
一、前言 本文主要以__alloc_workqueue_key函数为主线,描述CMWQ中的创建一个workqueue实例的代码过程。 二、WQ_POWER_EFFICIENT的处理 __alloc_workqueue_key函数的一开始有如下的代码: if ((flags & WQ_POWER_EF ...
分类:
其他好文 时间:
2018-02-21 23:02:12
阅读次数:
206
一、前言 一种新的机制出现的原因往往是为了解决实际的问题,虽然linux kernel中已经提供了workqueue的机制,那么为何还要引入cmwq呢?也就是说:旧的workqueue机制存在什么样的问题?在新的cmwq又是如何解决这些问题的呢?它接口是如何呈现的呢(驱动工程师最关心这个了)?如何兼 ...
分类:
其他好文 时间:
2018-02-21 23:00:47
阅读次数:
214
一、前言 本文主要讲述下面两部分的内容: 1、将work挂入workqueue的处理过程 2、如何处理挂入workqueue的work 二、用户将一个work挂入workqueue 1、queue_work_on函数 使用workqueue机制的模块可以调用queue_work_on(有其他变种的接 ...
分类:
其他好文 时间:
2018-02-21 22:59:53
阅读次数:
211
参数说明:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(cor ...
分类:
编程语言 时间:
2018-02-07 15:03:54
阅读次数:
248
上一篇文章对工作队列原理以及核心数据结构做了简单介绍,本文重点介绍下workqueue的创建以及worker的管理。 一、工作队列的创建(__alloc_workqueue_key) 该函数主要任务就是通过kzalloc分配一个workqueue_struct结构,然后格式化一个名称,对workqu ...
分类:
系统相关 时间:
2018-01-24 13:59:32
阅读次数:
289