加载共享库的多个副本

时间:2016-09-20 05:22:22

标签: shared-libraries dlopen

我希望能够将共享库的多个副本加载到同一个地址空间中。我希望他们不要共享任何全局变量,我希望这两个副本不知道另一个已加载。

用例是并行执行线程不安全的库。

我该怎么做

  • 在Linux上?
  • 在OS X上?
  • 在Windows上
  • on * BSD?
  • 在其他类Unix系统上?

1 个答案:

答案 0 :(得分:2)

  

用例是并行执行线程不安全的库。

即使你设法实现“不共享任何全局变量”的目标(这很难),库也可能不起作用,因为它可能会在<中调用线程不安全的例程em>其他库。

显而易见的情况是图书馆可以拨打strtok

在Linux和Solaris上,您可以使用dlmopen(LM_ID_NEWLM, ...)Man page