gpt4 book ai didi

c++ - boost::lexical_cast 是线程安全的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:38 26 4
gpt4 key购买 nike

我实际上没能在 boost 文档中找到这个问题的答案。我对在多线程环境中使用 atof 有点偏执,所以一个建议是用 lexical_cast 替换调用。 lexical_cast 是线程安全的吗?

最佳答案

是的,boost::lexical_cast 不会以任何方式修改输入字符串,如果从多个线程对同一字符串运行,则会产生新的输出。

它创建一个 stringstream,它本身不是线程安全的,即不能在没有同步的情况下在线程之间共享,但会在每个线程中使用不同的 stringstream 对象。

lexical_cast 的问题是我避免使用它的原因是它抛出的异常完全没有用(没有上下文的 bad_cast)。然而,这是一个单独的问题,而不是线程安全。

lexical_cast 的另一个问题(限制)是它只会使用 C 语言环境(经典)。所以如果你有自己的方面,也许是日期时间,你想在上面使用 lexical_cast,你可能会想修改经典语言环境作为一种解决方法,这就是它不再是线程安全的地方,除非它是一开始就做。

实际上,如果你正在解析一个文件,你最好使用 boost::spirit 如果它有一个特定的语法或 boost::serialize 或甚至是常规的istream。事实上,boost::lexical_cast 对于此目的来说效率非常低,因为它会为每个标记创建一个新流。

关于c++ - boost::lexical_cast 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29511560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com