This commit is contained in:
light-city
2023-07-21 22:15:22 +08:00
parent a617404c4a
commit bf8ac71ae2

View File

@@ -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备注: 加入星球
<img src="../img/cpp.jpg" alt="知识星球" width="400" height="300">
## 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.RAIIResource 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. 学习,也提供学习指导,求职建议等咨询~
<img src="../img/cpp.jpg" alt="知识星球" width="400" height="300">
## C++那些事十日狂练升级版
已更毕