我有一些旧的 C 静态库,其代码类似于:
.h文件
void setValue(int);
.c文件
int value;
void setValue(int i) { value = i; }
从主应用程序(用 C++ 编写)它只是通过调用调用(当然头文件中包含 extern C)
setValue(42);
在单线程中一切正常,当然如果在 2 个不同的线程中使用相同的库,则“值”在它们之间共享。
为每个线程的库使用单独内存的最佳方法是什么?
所以如果有 2 个线程 T1 和 T2,它会像这样工作:
T1.setValue(1);
T2.setValue(2);
T1.start();
T2.start();
// T1 works with value "1"
// T2 works with value "2"
最佳答案
假设您可以更改并重新编译代码,您可以使用 __thread
标记 value
静态变量。或 thread_local
(C++11) 或 __declspec(thread)
(MSVC)。然后每个线程都会有一个单独的变量存储。
关于c++ - 为 win32 线程使用不同的静态库内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819460/