C++并发API总结

2021-01-29  本文已影响0人  老杜振熙

本文是阅读《Effective Modern C++》之后的一点理解和笔记
github博客地址

基于线程 VS. 基于任务

int doAsyncWork();

std::thread t(doAsyncWork); // 基于线程
auto fut = std::async(doAsyncWork); // 基于任务

两类不同的启动策略std::launch::async VS. std::launch::deferred

auto fut = std::async(std::launch::async, f); // 强制异步执行

可联结 VS. 不可联结

线程句柄

// 关于std::packaged_task的实例
int f(); // 需要调用的异步函数

std::packaged_task<int()> pt(f);
auto fut = pt.get_future(); // fut不干涉底层线程行为
std::thread t(std::move(pt)); // 线程的join, detach行为由t控制

线程间的一次性通信事件

atomic VS. volatile

std::atomic<int> ai(0);
/** 一些代码 **/
ai = 3;
volatile int ioBuf = 1;
ioBuf = 2;
上一篇 下一篇

猜你喜欢

热点阅读