MathsionYang / modern_cpp_concurrent

现代c++并发编程(线程管理,线程共享数据,线程同步,原子变量,内存模型与顺序,线程池...)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

现代c++并发编程

现代c++并发编程

manageThread-线程基础管理

startThread.cpp: 线程的几种启动方式,参数传递。
RAIIWaitThread.cpp: RAII编程方式wait线程,线程所有权转移,线程标识获取。

sharedDataBetweenThreads-线程之间安全共享数据

threadSafeStack.cpp: 使用互斥元实现一个线程安全的stack,支持empty,push,pop。
lockMultiMutex.cpp: 同时锁定多个锁,减少死锁的风险。
lazyInitialize.cpp: “使用互斥元”,“二次检查锁定”(有数据竞争的风险,不推荐),“call-once”用法,“局部静态变量”多种方法保护lazy-initialization。
recursiveMutex.cpp: 递归锁(可重入锁)的使用方法。
sharedMutex.cpp: 使用boost库中的共享锁实现读写锁。

syncConcurrent-同步并发操作

threadSafeQueue.cpp: 使用条件变量实现一个线程安全的队列。
futrueAsync.cpp: future实现异步动作,不同policy的用法。
packagedTask.cpp: 通过packagedTask封裝task(包含可调用对象和future)并在线程之间传递任务。
promise.cpp: promise/future对用法。
sharedFuture.cpp: 使用sharedFuture实现多个线程同时等待一个线程。
spuriousWake.cpp: 虚假唤醒测试。
time.cpp: 时间段与时间点与时钟节拍。
parallelQuickSort.cpp: 使用future async实现一个并行快排。

atomic-原子变量与内存时序

atomicFlagLock.cpp: 使用atomicFlag实现一个自旋锁。
casStack.cpp: 使用compare_exchange_weak实现一个并发安全stack push动作。
sequentialConsistenOrdering.cpp: 使用sequence consistent memory order保证多个原子变量的访问顺序(happens before)。
relaxedOrdering.cpp: 使用relaxed memory order实现一个并发计数器。
releaseAcquireOrder.cpp: 使用release-acquire memory order保证非原子变量的访问顺序。
memBarriers.cpp: 使用内存屏障保障非原子变量的访问顺序。

threadPool-线程池

thread_safe_queue.hpp: 使用链表以及细粒度锁实现一个高并发的线程安全队列。
threads_joiner.hpp: 实现一个线程容器的joiner,在析构时能够join所有的线程。
simple_thread_pool.hpp: 实现一个简单的线程池,固定多个工作线程一直在工作,进来任务会被分配给某一个工作线程给执行。
futured_thread_pool.hpp: 基于simple_thread_pool开发的可以等待任务结果的线程池。
parallel_quick_sort.hpp: 基于futured_thread_pool开发的并行快排算法,可以控制并发数量。
multi_queue_thread_pool.hpp: 每个工作线程都有一个自己的“任务队列”的并且支持“任务窃取”的线程池,能够使得工作线程的并发性更高。
thread_pool_timer_container.h thread_pool_timer_container.cpp:基于boost线程池实现一个timer,timer callback跑在线程池中,并且支持循环timer。
my_thread_pool_test.cpp: 测试手写的thread pool。
boost_thread_pool_test.cpp: 测试常用的boost thread pool。

c11NewCharacteristic-c11一些新特性

funcParam.cpp: 函数名当做参数的几种方式,std::function与std::bind用法。
allConstructions.cpp: 六种构造函数实现方式,包括移动构造和移动赋值函数。
staticCastAndDynamicCast.cpp: static_cast与dynamic_cast区别。
variadicTemplates.cpp: 可变模板参数的使用,包括可变模板参数函数和可变模板参数类以及参数包的展开方式。
smartPointer.cpp: 智能指针(shared_ptr, unique_ptr, weak_ptr)的用法。
rightValueAndMove.cpp: 右值与移动构造、移动赋值函数。

About

现代c++并发编程(线程管理,线程共享数据,线程同步,原子变量,内存模型与顺序,线程池...)


Languages

Language:C++ 95.9%Language:CMake 4.1%