add proj readme

This commit is contained in:
light-city
2023-07-01 11:28:02 +08:00
parent 59fc284a0f
commit 93e8e66ca0
2 changed files with 92 additions and 2 deletions

View File

@@ -8,10 +8,11 @@
网站https://light-city.github.io/
## 规划
### 重磅项目
已支持bazel编译欢迎大家体验~
推出一系列重磅项目带大家实战学习C++,配合本开源项目学习,成长飞快!
直通点:[戳这里](./proj/README.md)
### 关于作者

89
proj/README.md Normal file
View File

@@ -0,0 +1,89 @@
# 重磅项目
## 1.手把手100行写一个简易版Mutex
### 1.1 内容
项目名称简易互斥锁SimpleMutex
项目描述简易互斥锁SimpleMutex是一个基于原子变量和信号量的互斥锁实现用于保护并管理多线程环境下的共享资源访问。它提供了一种简单而有效的方式来确保在多线程并发访问时只有一个线程可以同时访问受保护的资源从而避免数据竞争和不一致性。基于 POSIX 标准的信号量库实现,包含 Catch2 单元测试,附带了基于 Catch2 框架的单元测试用于验证互斥锁的正确性和稳定性使用bazel编译google编码规范。
### 1.2 涉及内容
其中涉及C++知识RAII、信号量、lock_guard、线程安全编程还能学习以下内容
1.Bazel构建系统了解如何使用Bazel来管理和构建C++项目。Bazel是一种高效、可扩展的构建工具可用于管理复杂的项目结构、依赖关系和构建流程。
2.Catch2测试框架掌握如何使用Catch2来编写单元测试。Catch2是一个功能强大且易于使用的C++测试框架,可以帮助你编写清晰、可读性高的测试用例,提高代码质量和可靠性。
3.原子操作:了解原子操作的概念和使用方法。原子操作是一种并发编程技术,可以确保对共享变量的操作是不可中断的,避免了竞态条件和数据不一致的问题。
4.fetch_add函数学习如何使用fetch_add函数进行原子的加法操作。fetch_add是一种原子操作函数它可以在并发环境中安全地对共享变量进行原子加法操作避免了数据竞争。
5.内存序了解不同的内存序memory order对多线程程序的影响。
6.锁的自动管理引入lock_guard类实现锁的自动获取和释放。lock_guard是C++标准库提供的一种锁管理工具,它在构造函数中获取锁,在析构函数中释放锁,确保在任何情况下都能正确释放锁,避免因为异常或早期返回等情况导致锁没有释放的问题。
7.RAIIResource Acquisition Is Initialization原则了解如何使用对象的生命周期来管理资源的获取和释放确保资源的正确获取和释放避免资源泄漏。
## 2.七种方式玩转condition_variable
### 2.1 内容
1.CPU轮询等待版单生产者单消费者
该版本使用了简单的轮询机制,生产者不断地检查消费者是否已经消费完数据。这种模式简单直接,但效率较低,因为生产者在没有数据时仍然在忙等待。
2.等待通知版单生产者单消费者:
该版本引入了等待通知机制,生产者在没有数据时会等待消费者的通知。这种模式避免了忙等待,提高了效率,同时减少了资源消耗。
3.等待通知版单生产者多消费者:
在这个版本中,引入了多个消费者,它们共享生产者的数据。生产者在产生数据后,通知所有消费者进行处理。
4.等待通知版多生产者多消费者:
这个版本支持多个生产者和多个消费者,生产者之间和消费者之间共享数据。生产者在产生数据后,通知所有消费者进行处理。
5.单生产者多消费者并行版:
在这个版本中,引入了并行处理机制,多个消费者可以同时处理数据。生产者产生数据后,多个消费者并行处理,提高了整体处理速度。
6.多生产者多消费者并行版:
这个版本支持多个生产者和多个消费者,并且允许并行处理。多个生产者并行产生数据,多个消费者并行处理数据,提高了整体并发能力。
7.支持Lambda回调的优雅停止版
在这个版本中引入了Lambda回调函数用于优雅地停止并发处理。可以通过调用回调函数来停止生产者和消费者的处理并进行清理工作。
### 2.2 涉及内容
1.多线程和并发编程通过这些版本的描述您可以了解到如何在C++中使用多线程和并发编程来处理并行任务。您将学习如何创建线程、控制线程的执行、线程间的数据共享和同步等。
2.同步机制:在这些版本中,介绍了不同的同步机制,如轮询等待、等待通知和回调函数。您将学习如何使用互斥锁、条件变量、信号量等来实现线程间的同步和协调。
3.Lambda表达式在支持Lambda回调的版本中您将学习如何使用C++11引入的Lambda表达式来编写简洁而灵活的回调函数以实现优雅的停止机制。
4.代码组织和构建工具提到了支持bazel编译的能力这可以让您学习如何使用构建工具来组织和管理复杂的C++项目。
5.condition_variable、mutex、unique_lock
## 3.duckdb + levledb
leveldb 源码剖析已更毕
duckdb 持续更新
## 4.C++那些事十日狂练升级版
还差2日可更完
## 5.学习方式
1. 如果想学习以上内容可扫码加入知识星球或添加个人wx: gcxzhang备注: 星球
2. 学习,也提供学习指导,求职建议等咨询~
<img src="../img/cpp.jpg" alt="知识星球" width="400" height="300">