我有一些旧的C静态库,其代码类似于:
.h文件
void setValue(int);
.c文件
int value;
void setValue(int i) { value = i; }
从主应用程序(用c ++编写)它只是通过调用调用(当然,包含在头文件中的extern C包含)
setValue(42);
在单线程中一切正常,当然如果在2个不同的线程中使用相同的lib" value"在他们之间共享。
对于每个线程,为该lib使用单独的内存最好的方法是什么?
所以如果有2个线程T1和T2,它将像:
T1.setValue(1);
T2.setValue(2);
T1.start();
T2.start();
// T1 works with value "1"
// T2 works with value "2"
答案 0 :(得分:1)
假设您可以更改并重新编译代码,您可以使用__thread
或value
(C ++ 11)或__declspec(thread)
标记thread_local
静态变量(MSVC)。然后每个线程将为变量分别存储。