代码之家  ›  专栏  ›  技术社区  ›  Don Wakefield

请解释在地区中使用互斥体的必要性

  •  3
  • Don Wakefield  · 技术社区  · 16 年前

    Why doesn’t C++ STL support atoi(const string& ) like functions? ,我遇到一条评论,警告GCC(至少)有 bug 奥斯汀河 频繁地这显然是由于一个互斥“需要”的C++现场机器。

    考虑到我的 recent interest

    2 回复  |  直到 9 年前
        1
  •  3
  •   CB Bailey    16 年前

    std::locale 具有检索和设置“全局”语言环境的静态函数。全局语言环境定义为在标准库的多个区域中使用,这意味着某个地方必须有全局语言环境。

    在支持线程的实现中,很可能需要通过某种锁定机制来保护此全局区域设置,以防止线程之间的同时访问导致不期望的行为。

        2
  •  1
  •   bmargulies    16 年前

    答案可能是延迟初始化。语言环境系统后面有很多数据,很容易犯编码序列的错误:

    1. 锁定
    2. 检查初始化
    3. 释放锁

    你在这儿。

    从线程性能的角度来看,我们中的一些人不相信整个iostream机制。从1987年开始,它就充满了不需要的锁,无法声明单个流只在单个线程中使用。