Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++11 Concurrency Locks

这是一个面向求职展示的 C++11 多线程项目骨架,目标是从零实现常见同步工具,并配套示例和测试。

当前模块

  • Mutex:基于 std::atomic_flag 的自旋互斥锁。
  • SharedMutex:基于 std::atomic<int> 状态机和读写统一 ticket FIFO 的自旋读写锁。
  • LockGuard:互斥锁 RAII 守卫,构造时加锁,析构时解锁。
  • SharedLockGuard:共享读锁 RAII 守卫。
  • UniqueLockGuard:独占写锁 RAII 守卫。

锁的核心实现不封装 std::mutexstd::shared_mutexstd::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() 高竞争读路径。
  • 读写锁不变量:写独占、读写互斥、多读并发、共享数据一致性。

文档

后续可扩展方向

  • 实现 ThreadPool,展示任务队列、条件变量和优雅退出。
  • 加入性能压测,对比 std::mutexstd::shared_timed_mutex

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages