对win32线程使用不同的静态lib内存

时间:2015-01-07 12:23:38

标签: c++ c multithreading thread-local-storage

我有一些旧的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"

1 个答案:

答案 0 :(得分:1)

假设您可以更改并重新编译代码,您可以使用__threadvalue(C ++ 11)或__declspec(thread)标记thread_local静态变量(MSVC)。然后每个线程将为变量分别存储。