gpt4 book ai didi

c++ - 为 win32 线程使用不同的静态库内存

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:52 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com