这是一个面向求职展示的 C++11 多线程项目骨架,目标是从零实现常见同步工具,并配套示例和测试。
Mutex:基于std::atomic_flag的自旋互斥锁。SharedMutex:基于std::atomic<int>状态机和读写统一 ticket FIFO 的自旋读写锁。LockGuard:互斥锁 RAII 守卫,构造时加锁,析构时解锁。SharedLockGuard:共享读锁 RAII 守卫。UniqueLockGuard:独占写锁 RAII 守卫。
锁的核心实现不封装 std::mutex、std::shared_mutex、std::condition_variable 这类现成锁接口,只使用 C++11 原子操作作为基础。
// Mutex
void lock();
bool try_lock();
void unlock();
// SharedMutex
void lock();
bool try_lock();
void unlock();
void lock_shared();
bool try_lock_shared();
void unlock_shared();.
├── CMakeLists.txt
├── README.md
├── include/concurrency
│ ├── lock_guard.hpp
│ ├── mutex.hpp
│ ├── noncopyable.hpp
│ └── shared_mutex.hpp
├── src
│ ├── mutex.cpp
│ └── shared_mutex.cpp
├── examples
│ └── lock_demo.cpp
└── tests
├── lock_tests.cpp
└── stress_tests.cpp
cmake -S . -B build
cmake --build build
./build/lock_demo
ctest --test-dir build --output-on-failure基础正确性测试:
./build/lock_tests压力测试:
./build/stress_tests全部 CTest 测试:
ctest --test-dir build --output-on-failure当前压力测试覆盖:
Mutex高并发计数递增。Mutex::try_lock()高竞争失败回退。SharedMutex多读多写混合压力。SharedMutex::try_lock_shared()高竞争读路径。- 读写锁不变量:写独占、读写互斥、多读并发、共享数据一致性。
- 文档阅读路线
- 源码阅读建议
- ThreadLearning 常见问题详解
- C++11 内存序与 RAII 统一详解
- C++11 并发接口与底层原理
- Linux/操作系统视角下的锁底层原理
- C++11 原子操作底层原理与实现
- 锁的其他底层实现方式
- 本项目锁实现方式
- 标准库并发接口与本项目实现对比
- 实现
ThreadPool,展示任务队列、条件变量和优雅退出。 - 加入性能压测,对比
std::mutex、std::shared_timed_mutex。