gpt4 book ai didi

c++ - g++ __thread = 非平凡的构造函数

转载 作者:行者123 更新时间:2023-11-30 03:03:50 24 4
gpt4 key购买 nike

我想在 g++ 中使用 __thread 修饰符来替代 C++11 中的 thread_local。不幸的是,我的本地线程变量没有简单的构造函数(它必须设置一个整数分量的值)。我考虑使用这种构造:

__thread MyVariable *var;

__thread MyVariable* MyClass::var = nullptr;

每次我想获得对 var 的访问时,我都会检查它是否已分配:

if(var == nullptr)
var = new MyVariable(42);

但我不知道如何释放以这种方式分配的内存。

最佳答案

__thread存储说明符无法处理具有非平凡构造函数和析构函数的对象。

对于具有非平凡构造函数和析构函数的对象,您可能喜欢使用 boost::thread_specfic_ptr<> .当线程终止时 boost::thread_specfic_ptr<>调用 delete在相应的线程特定对象上。

关于c++ - g++ __thread = 非平凡的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148640/

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