Hasty Briefsbeta

双语

Comparing exception behavior of magic statics, std:call_once, and std:async

2 days ago
  • 魔法静态变量和 std::call_once 在发生异常时会重试初始化,使状态保持未初始化。
  • std::async 会保存异常,并在访问 future 时重新抛出,不会重试。
  • 选择 std::call_once 还是 std::async 取决于你是想重试还是记住失败。
  • 对于简单变量,使用带有哨兵值的 std::atomic 可能比魔法静态变量性能更好。
  • std::atomic 哨兵方法要求计算可安全重复,并且可能不适用于注册令牌。