随笔分类 - <九>:C++多线程
C++多线程
摘要:unique_lock condition_variable 1:lock_guard 和 unique_lock 2:condition_variable wait 和 notify_all 方式1 std::mutex mtx; mtx.lock(); .. ... mtx.unlock();/
阅读全文
摘要:C++11多线程类库中提供了 include包含了很多原子类型 原子操作 若干汇编指令具有读-修改-写类型,也就是说它们访问存储器单元两次,第一次读原值,第二次写新值 假定运行在两个cpu上的两个内核控制路径试图通过执行非原子操作来同时读-修改-写同一个存储器。 首先两个cpu都试图读同一单元,然后
阅读全文
摘要:多线程编程两个问题 1:线程互斥问题 竞态条件->临界区代码段->原子操作->互斥锁mutex 2:线程间的同步通信 生产者,消费者 线程模型 #include <iostream> #include <queue> #include <thread> #include <mutex> #inclu
阅读全文
摘要:多线程程序 竞态条件:多线程程序执行的结果是一致的,不会随着CPU对线程不同的调用顺序而产生不同的运行结果. 解决?:互斥锁 mutex 经典的卖票问题,三个线程卖100张票 代码1 #include <iostream> #include <thread> #include <list> #inc
阅读全文
摘要:C++语言层面多线程=>好处:跨平台 windows/linux thread/mutex/condition_variable lock_gurad/unique_lock atomic/原子类型,基于CAS操作的原子类型 线程安全的 睡眠sleep_for C++ thread => windo
阅读全文