[英]can anyone please explain me the need for & in the first code snippet
[英]Explain the Need for Mutexes in Locales, Please
阅读问题为什么C ++ STL不支持atoi(const string&)函数? ,我遇到一条评论警告GCC(至少)有一个错误 ,可以减慢频繁使用ostringstream的多线程应用程序。 这显然是由于C ++语言环境机制需要的互斥量。
鉴于我最近对全球化实践感兴趣 ,我想知道是否有人可以向我解释为什么语言环境对象需要互斥锁? 在需要互斥锁的区域设置中可以更改的是什么? 它不应该是一个只读设施吗?
这确实是一个实现问题,但是std::locale
有一个静态函数,可以检索和设置'全局'语言环境。 全局语言环境定义为在标准库的几个区域中使用,这意味着某处必须存在全局语言环境。
在支持线程的实现中,很可能需要通过某种锁定机制来保护此全局区域设置,以防止线程之间的同时访问导致不期望的行为。
由于当前标准根本没有明确地处理线程,因此它是关于如何(或者如果)实现此锁定机制以及是否需要其他共享数据和锁的集合实现选择。
答案可能是懒惰的初始化。 语言环境系统背后有很多数据,很容易犯错误编码序列:
那就是你。
我们中的一些人不相信整个iostream机制,只要我们可以从线程性能的角度抛出它。 自1987年以来,它已经充满了不必要的锁,无法声明单个流只能在单个线程中使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.