【发布时间】:2015-12-11 02:27:00
【问题描述】:
我想在线程内部共享一个成员变量,但不在线程之间共享。
它的行为就像一个静态成员,但它只是一个线程中的“全局”,它是一个线程局部变量。
我可以想到两种解决方案:
首先,在每个线程中创建一个局部变量,然后将此变量作为参数传递给每个使用它的方法。(这会导致耦合)
或者,定义一个名为 MyStruct 的结构体,其中包含一个线程局部变量和一个线程 ID,然后将所有这些 MyStructs 做成一个向量,将此向量用作静态成员变量。
每次使用这个成员变量时,先获取线程ID,然后找到具有相同线程ID的MyStruct,如果没有找到,推回一个新的MyStruct。在线程结束之前擦除这个Mystruct。(不方便)
有简单的解决办法吗?
【问题讨论】:
-
完全不清楚您的实际要求,抱歉。
-
@πάνταῥεῖ:真的吗?他确切地说他想要:(1)一个成员变量,(2)一个静态成员和(3)一个线程局部变量。在前两句中。
-
@5gon12eder:这恰恰相反。该 OP 已经知道线程局部变量是什么,并询问如何在 C++ 中执行此操作。另一个发现了一个用于创建线程局部变量的新关键字,并询问它们是什么。
-
@BenVoigt 是的,但我认为另一个问题的答案(尤其是那些有代码的问题)应该为 OP 提供足够的信息来解决问题。没有?
标签: c++ multithreading