摘要: 尽量不使用无锁架构,除非绝对必要 复杂性中有一些东西吸引了每一位工程师。与常规同步机制(如互斥锁、条件变量、异步等)相比,无锁编程听起来非常性感。然而,与我交谈过的每一位经验丰富的 C++ 开发人员都认为,使用无锁编程作为首要手段是一种过早的优化形式,可能会在最合适的时候再次困扰你(想想当你没有完整 阅读全文
posted @ 2022-05-31 01:57 strive-sun 阅读(54) 评论(2) 推荐(0) 编辑
摘要: 在 C++11 中,不要将 volatile 用于线程,仅限于 MMIO(内存映射) 简单的回答, 在声明变量类型之前添加 "volatile" 关键字不会使对该变量有任何方式的原子操作或者线程安全,我们需要使用 std::atomic 详细的解释, 参考:When to use volatile 阅读全文
posted @ 2022-05-31 01:51 strive-sun 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在 async 任务中抛出的异常会被 std::future::get() 触发 #include <future> #include <iostream> int main() { std::future<int> myFuture = std::async(std::launch::async, 阅读全文
posted @ 2022-05-31 01:43 strive-sun 阅读(64) 评论(0) 推荐(0) 编辑