我正在使用一个名为“JSON for Modern C ++”的库(https://github.com/nlohmann/json),它很漂亮,让我使用与Javascript服务器端应用程序共享的C ++程序的JSON配置文件。该库本质上创建了另一种数据类型,该数据类型的访问和操作方式与Javascript JSON对象非常接近。
我的问题是,我是否需要关注JSON变量访问和操作的线程安全性,或者我可以相信该库是线程安全的。我查看了文档并且我没有看到它说它是线程安全的,但我也没有看到任何说它不是线程安全的。
是否有其他人在多线程环境中使用此库?你需要自己保护它还是图书馆保护自己。也许我真的很幸运,存储库作者nlohmann将直接回答!
非常感谢任何帮助!
答案 0 :(得分:3)
nlohmann库不是线程安全的。看一下头文件。这是一个单一的。没有互斥锁,锁或原子或与线程相关的任何东西。
https://github.com/nlohmann/json/blob/develop/src/json.hpp
您有责任防止多个线程访问此数据的并发性。
答案 1 :(得分:1)
根据 About thread safety #2366 中的作者:
<块引用>不,容器就像地图或向量:您必须自己确保线程安全。