首页 > 解决方案 > 有没有办法在进程之间共享变量(在共享库中)?

问题描述

我想在共享库中初始化一个复杂变量,但只初始化一次。之后我想与所有使用这个库的进程共享现在初始化的变量。

例子

这可能吗?当您从不同进程的共享库中调用函数时,我不确定系统中到底发生了什么,但看起来它们不共享相同的空间。

实际情况:我在Linux上。我想解析一个 yaml 配置文件并通过共享库获取配置值,而不是一次又一次地解析配置文件。我正在使用 yaml-pp 和 yaml-cpp-path 来获取值。然后它会调用在 yaml 文件中定义的eg get_config("something.id) id`。to get the

标签: cvariablesprocessshared-librariespermanent

解决方案


如何执行此操作的具体答案是特定于平台的,但您想查看您的平台提供的任何共享内存设施。简而言之,您需要设置一个互斥锁或类似的东西,然后等待互斥锁解锁。

互斥锁解锁后,步骤的确切顺序取决于平台上共享内存的工作方式,但您需要创建/附加到内存段,确定是否有其他进程已经创建了该段,如果没有,则将共享数据写入其中。

完成所有这些后,释放互斥锁并继续您的快乐方式。


推荐阅读