From bf8ac71ae29b3904c5d1240e11fc84bd87772bac Mon Sep 17 00:00:00 2001 From: light-city <455954986@qq.com> Date: Fri, 21 Jul 2023 22:15:22 +0800 Subject: [PATCH] add proj --- proj/README.md | 88 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 18 deletions(-) diff --git a/proj/README.md b/proj/README.md index dbc4875..28f88b4 100644 --- a/proj/README.md +++ b/proj/README.md @@ -1,13 +1,74 @@ +- [重磅项目](#重磅项目) + - [学习方式](#学习方式) + - [HOT: 新增项目](#hot-新增项目) + - [线程池](#线程池) + - [内存池](#内存池) + - [手把手100行写一个简易版Mutex](#手把手100行写一个简易版mutex) + - [内容](#内容) + - [涉及内容](#涉及内容) + - [七种方式玩转condition\_variable](#七种方式玩转condition_variable) + - [内容](#内容-1) + - [涉及内容](#涉及内容-1) + - [duckdb + levledb](#duckdb--levledb) + - [C++那些事十日狂练升级版](#c那些事十日狂练升级版) + + # 重磅项目 -## 1.手把手100行写一个简易版Mutex -### 1.1 内容 +## 学习方式 + +深入学习以下项目,可扫码加入知识星球或添加个人wx: gcxzhang,备注: 加入星球 + + +知识星球 + + +## HOT: 新增项目 + +### 线程池 + +这个项目的线程池是基于Apache Arrow项目的衍生版本。我们将Arrow项目中复杂的核心结构——线程池——完全剥离出来,形成了这个独立的项目。由于原>始的线程池与Arrow项目本身的工具有深度依赖关系,因此我们在这个项目中对线程池进行了一些深度移除和改造,以保持与原始Arrow线程池的基础功能 +一致。一些改动包括: + +- 将Arrow的Future替换为std::future +- 将Arrow的Result替换为std::optional +- 重构了Submit接口,使用promise进行实现 + +通过这些改动,我们的目标是: + +- 使线程池更方便地作为其他项目的依赖库使用 +- 提供简单的方式来引入本项目的so库和头文件,以使用线程池功能 + +此外,这个项目还可以作为深入学习线程池设计与实现的资源。我们欢迎您探索并使用这个经过精心改进的线程池。 + +https://github.com/Light-City/light-thread-pool + +### 内存池 + +这个项目的内存池是基于Apache Arrow项目的衍生版本。我们将Arrow项目中复杂的核心结构——内存池——完全剥离出来,形成了这个独立的项目。由于原>始的内存池与Arrow项目本身的工具有深度依赖关系,因此我们在这个项目中对内存池进行了一些深度移除和改造,以保持与原始Arrow内存池的基础功能 +一致。一些改动包括: + +- 分离allocator与memory_pool +- 移除不需要的LoggingMemoryPool、ProxyMemoryPool +- 移除jemalloc等第三方malloc库,未来可以支持 + +通过这些改动,我们的目标是: + +- 使代码更加精简 +- 使内存池更方便地作为其他项目的依赖库使用 +提供简单的方式来引入本项目的so库和头文件,以使用内存池功能 +此外,这个项目还可以作为深入学习内存池设计与实现的资源。我们欢迎您探索并使用这个经过精心改进的内存池 + +https://github.com/Light-City/light-memory-pool + +## 手把手100行写一个简易版Mutex +### 内容 项目名称:简易互斥锁(SimpleMutex) 项目描述:简易互斥锁(SimpleMutex)是一个基于原子变量和信号量的互斥锁实现,用于保护并管理多线程环境下的共享资源访问。它提供了一种简单而有效的方式来确保在多线程并发访问时,只有一个线程可以同时访问受保护的资源,从而避免数据竞争和不一致性。基于 POSIX 标准的信号量库实现,包含 Catch2 单元测试,附带了基于 Catch2 框架的单元测试,用于验证互斥锁的正确性和稳定性,使用bazel编译,google编码规范。 -### 1.2 涉及内容 +### 涉及内容 其中涉及C++知识(RAII、信号量、lock_guard、线程安全编程),还能学习以下内容: @@ -25,9 +86,9 @@ 7.RAII(Resource Acquisition Is Initialization)原则:了解如何使用对象的生命周期来管理资源的获取和释放,确保资源的正确获取和释放,避免资源泄漏。 -## 2.七种方式玩转condition_variable +## 七种方式玩转condition_variable -### 2.1 内容 +### 内容 1.CPU轮询等待版单生产者单消费者: @@ -57,7 +118,7 @@ 在这个版本中,引入了Lambda回调函数,用于优雅地停止并发处理。可以通过调用回调函数来停止生产者和消费者的处理,并进行清理工作。 -### 2.2 涉及内容 +### 涉及内容 1.多线程和并发编程:通过这些版本的描述,您可以了解到如何在C++中使用多线程和并发编程来处理并行任务。您将学习如何创建线程、控制线程的执行、线程间的数据共享和同步等。 @@ -69,21 +130,12 @@ 5.condition_variable、mutex、unique_lock -## 3.duckdb + levledb +## duckdb + levledb leveldb 源码剖析已更毕 duckdb 持续更新 -## 4.C++那些事十日狂练升级版 - -还差2日可更完 - -## 5.学习方式 - -1. 如果想学习以上内容,可扫码加入知识星球或添加个人wx: gcxzhang,备注: 星球 - -2. 学习,也提供学习指导,求职建议等咨询~ - -知识星球 +## C++那些事十日狂练升级版 +已更毕