mirror of
https://github.com/Light-City/CPlusPlusThings.git
synced 2026-02-03 10:33:25 +08:00
add proj
This commit is contained in:
@@ -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.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. 学习,也提供学习指导,求职建议等咨询~
|
||||
|
||||
<img src="../img/cpp.jpg" alt="知识星球" width="400" height="300">
|
||||
## C++那些事十日狂练升级版
|
||||
|
||||
已更毕
|
||||
|
||||
Reference in New Issue
Block a user