一、原子操作std::atomic
续谈:
一般原子操作针对:++、–、+=、|=、^=支持,其他可能不支持。
g_count++;//OK
g_count += 1;//OK
//g_count = g_count + 1;ERROR
二、std::async深入理解:
2.1 两个参数:
- 延迟调用参数
std::launch::deferred
【延迟调用】 std::launch::async
【强制创建一个线程】
std::async
和std::thread
最明显的不同,就是 std::async
有时候并不创建新线程。一般叫它创建一个异步任务。
- 如果用std::launch::deferred 来调用async:延迟到调用 get() 或者 wait() 时执行,如果不调用就不会执行:
async
任务中的计算将在主线程中完成:
std::future<int>result = std::async(std::launch::deferred,myThread)