gpt4 book ai didi

c++ - 加载共享库的多个拷贝

转载 作者:IT老高 更新时间:2023-10-28 23:16:09 26 4
gpt4 key购买 nike

我正在运行 Linux,我希望能够对共享库 (.so) 进行并行函数调用,不幸的是它不是线程安全的(我猜它具有全局数据结构)。

出于性能原因,我不想简单地将函数调用包装在互斥体中。

我想做的是产生 4 个线程,并将同一个库的 4 个拷贝加载到进程内存中。然后每个线程将函数调用到它自己的库拷贝中。

不幸的是,dlopen 不允许我加载任何库的多个实例。

有谁知道有什么方法可以让我多次加载库? (除了制作 .so 文件的 4 个拷贝,每个拷贝都有不同的名称)

最佳答案

可以像这样加载库的多个独立拷贝:

#define _GNU_SOURCE
#include <dlfcn.h>
...
void *handle = dlmopen(LM_ID_NEWLM, "/path/to/library.so", RTLD_NOW);

更多信息 here .

关于c++ - 加载共享库的多个拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1745975/

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