【cdk的使用】C 最精简的线程池使用 源码只有100行

2023-11-09

Github地址: https://github.com/wujin1989/cdk

首先cdk的线程池实现只用了100行左右代码,非常精简。有兴趣的可以阅读一下,中规中矩。只要项目对线程池性能要求不是非常的苛刻,我觉得100行的线程池足矣。
但是,如果非要追求极致性能,基于cdk的线程池可以很方便的扩展,比如:

  • 使用lock-free queue。
  • 线程每次从queue里读取多个job,然后放进当前线程的私有queue。这样可以减少lock的开销。

总而言之,基于cdk的thread pool 应该可以很容易扩展。

好了,下面看看cdk的thread pool 如何使用吧。

cdk线程池的使用:

#include "cdk.h"

void task_func(void* p) {

	printf("[%d] doing task.\n", (int)cdk_gettid());
}

int main(void) {

	thrdpool_t* tp;
	tp = cdk_thrdpool_create();

	for (int i = 0; i < 50; i++) {

		thrdpool_job_t* job;
		
		job = malloc(sizeof(thrdpool_job_t));
		if (!job) {
			return -1;
		}
		job->fn = task_func;
		job->p  = NULL;
		cdk_queue_init_node(&job->q_n);

		cdk_thrdpool_post(tp, job);
	}
	while (1);
	cdk_thrdpool_destroy(tp);
	return 0;
}

怎么样?是不是很简单。快点尝试吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【cdk的使用】C 最精简的线程池使用 源码只有100行 的相关文章

随机推荐

  • template模板中的if判断语句

    if 0 value task state 22 else 33 if
  • 程序员,都去写一写前端代码吧

    转至 http www raychase net 1162 你可以认为我是一个极端的人 就像有许多人专注于自己的领域而不屑于其它 肤浅 的工作范畴一样 比如我见过不少认为做portal没有技术含量的判定 做工程都是充满苦逼行为的言论 最近则
  • Quant 实习申请总结[转自丁丁笑笑生]

    我是University of Michigan博士第四年的学生 专业是高能理论物理 弦论 从北大元培毕业来到美国之后 我对科研的兴趣 信心和成就感与日俱减 加之对于未来组建家庭的考虑 决定放弃科研理想和道路 寻找一份工作 养家糊口 积累一
  • C++ 中的 POD 类型

    C 内存管理系列文章汇总 C 中数据类型和变量总结 C 中内存分区总结 C 中三种内存对象特点总结 C 中栈对象的使用总结 C 中 static 静态对象的使用总结 C 中堆对象的使用总结 C 中普通类的对象布局 C 中字节对齐总结 C 继
  • Linux终端信息

    获取终端能显示的行数和列数 student myhost tput cols 140 student myhost tput lines 35 获取终端名 student myhost tput longname xterm with 25
  • 软工导论知识框架(八)面向对象设计风格

    一 面向对象实现 把面向对象设计结果翻译成面向对象程序 测试并调试面向对象的程序 二 程序设计语言 所有语言都可完成面向对象实现 但效果不同 使用非面向对象语言编写面向对象程序 则必须由程序员自己把面向对象概念映射到目标程序中 1 将来能够
  • 怎么用css画一个心形_如何用CSS创建心形

    CSS3增强了我们仅使用HTML和CSS就能在网站上构建内容的可行性 您可以找到我们以前精选的出色示例 但是 不要让自己过分领先 复杂的设计将需要可能使您头疼的代码 取而代之的是 我们将创建一些简单的内容 以帮助您先了解CSS的形状和位置
  • Integral nonlinearity (INL) and differential nonlinearity (DNL) of data converters

    Syntax s inldnl analog digital range type s inldnl Name Value Description example s inldnl analog digital range type cal
  • 与中断有关的MCS-51特殊功能寄存器

    MCS 51系列特殊功能寄存器 与中断有关的 一 中断允许寄存器IE 字节地址0A8H 位地址AFH A8H 1 EA CPU中断总允许位 EA 0时 屏蔽所有中断请求 EA 1时 CPU开放中断 2 ES 串行口中断允许位 ES 0时 串
  • 2021年开发Python图形用户界面(GUI)的6种最佳Python GUI框架

    几个知名的编程语言排行榜索引已证明了Python在全球开发人员中的崛起 但是 以开发人员为中心的英国分析家SlashData现在已经对使用该语言的开发人员的实际人数进行了估算 根据SlashData在2019年的统计 目前全球有820万使用
  • 小程序适老化设计指南

    小程序适老化设计指南 小程序适老化设计指南
  • IDEA 单元测试报错 java.lang.ClassNotFoundException: junit.framework.ComparisonFailure

    项目场景 单元测试时报错 java lang ClassNotFoundException junit framework ComparisonFailure 原因分析 提示 这里填写问题的分析 例如 Handler 发送消息有两种方式 分
  • 从零开始利用JPA与SHARDING-JDBC动态划分月表

    开始 从零开始利用spring data jpa与sharding jdbc进行动态月表 直接上手 需求说明 数据量按照分片键 入库时间 进入对应的月表 查询时根据分片键的值查询指定表 但是每次查询都必须带上分片键 这就不是很友好 所以另外
  • 递归时间复杂度分析 && master公式

    递归时间复杂度分析 master公式 我们先来看一道递归的例子 我们要寻找一个数组的最大值 要求用递归的方法求出 代码如下 author dongxu kwb date 2022 8 30 public class SumMax publi
  • 摄影实用入门-EOS 750D

    光圈 F1 8 大 F3 5 F22 小 光圈大 进光多 景深浅 虚化明显 拍近景 光圈小 进光少 景深深 虚化不明显 拍远景 场景1 拍近处的花朵 用大光圈 虚化掉背景 拍一片花海 用小光圈 把所有的花都拍清楚 场景2 和美丽的背景合影
  • 逻辑回归分析实战(根据鸢尾花的性质预测鸢尾花类别)

    紧接着上过一个线性回归模型 一元线性回归模型实战 一元线性回归模型和逻辑回归模型是统计学中常见的两种回归模型 它们有以下几点不同之处 1 目标变量类型 一元线性回归模型适用于连续型目标变量 即预测一个数量 而逻辑回归模型适用于二分类目标变量
  • Linux使用dd命令快速生成大文件

    转自 http blog csdn net wind19 article details 7352983 dd命令可以轻易实现创建指定大小的文件 如 dd if dev zero of test bs 1M count 1000 会生成一个
  • XXL-JOB的概述

    前言 当涉及到分布式任务调度和定时任务管理时 XXL JOB是一个备受欢迎的开源框架 XXL JOB提供了一个可视化的任务管理界面 可以帮助您管理和监控定时任务 在本博客中 我们将探讨XXL JOB的基本概念 并演示如何使用XXL JOB来
  • INCA二次开发-MIP

    1 INCA介绍 INCA是常用的汽车ECU测试和标定的 广泛应用于动力总成等领域 INCA提供了丰富的接口 供用户自动化 定制化 本公众号通过几篇文章 介绍下一些二次开发的方法 本篇介绍MIP 2 MIP MIP MATLABIntegr
  • 【cdk的使用】C 最精简的线程池使用 源码只有100行

    Github地址 https github com wujin1989 cdk 首先cdk的线程池实现只用了100行左右代码 非常精简 有兴趣的可以阅读一下 中规中矩 只要项目对线程池性能要求不是非常的苛刻 我觉得100行的线程池足矣 但是