1

我正在使用一个名为“现代 C++ 的 JSON”( https://github.com/nlohmann/json ) 的库,它非常漂亮,让我可以通过与 Javascript 服务器端应用程序共享的 C++ 程序使用 JSON 配置文件。该库本质上创建了另一种数据类型,该数据类型的访问和操作方式与 Javascript JSON 对象非常接近。

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

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

任何帮助是极大的赞赏!

4

2 回答 2

8

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

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

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

于 2017-06-07T18:57:40.763 回答
2

根据关于线程安全 #2366中的作者:

不,容器就像地图或矢量:您必须自己确保线程安全。

于 2021-04-28T14:52:15.243 回答