JSON 对于现代 C++ 线程安全?

JSON for Modern C++ thread safe?

我正在使用名为 "JSON for Modern C++" (https://github.com/nlohmann/json) 的库,它非常灵活,让我可以使用与 [=21] 共享的 C++ 程序的 JSON 配置文件=] 服务器端应用程序。该库实质上创建了另一种数据类型,该数据类型的访问和操作方式与 Javascript JSON 对象非常接近。

我的问题是,我是否需要关注 JSON 变量访问和操作的线程安全性,或者我是否可以相信该库是线程安全的。我查看了文档,没有看到它说它是线程安全的,但我也没有看到任何地方说它不是线程安全的。

还有其他人在多线程环境中使用这个库吗?你需要自己保护它还是图书馆保护自己。也许我真的很幸运,存储库作者 nlohmann 会直接回答!

非常感谢任何帮助!

nlohmann 库不是线程安全的。看一下头文件。这是一个单一的。没有互斥锁、锁或原子或任何与线程相关的东西。

https://github.com/nlohmann/json/blob/develop/src/json.hpp

您负责防止多个线程并发访问此数据。

根据 About thread safety #2366 中的作者:

No, the container is like a map or a vector: you have to ensure thread safety yourself.