我们在工作场所使用旧式图书馆。它包含一些业务逻辑,并且它的代码在千年变化之前就丢失了。代码包含一些严格的财务算法,它积极使用全局变量。
我们计划并行进行一些计算,并启动新线程。每个线程将彼此独立,只是一个黑盒返回一些数字。
核心问题是库不是线程安全的。我们希望以某种方式使每个线程都具有共享库中自己的全局变量,代码等的副本。
这可能吗?目前,我们仅修补符号名称并使用前缀进行复制。
library-thread1.so
,library-thread2.so
等
在Linux下使用RTLD_DEEPBIND
加载符号。
编辑:用进程替换线程是解决此问题的最严格方法,但它引起了人们对性能的担忧。而且似乎要做很多工作,而不仅仅是干脏事。