gpt4 book ai didi

C++ g++ 线程安全构造函数

转载 作者:行者123 更新时间:2023-11-28 08:30:41 26 4
gpt4 key购买 nike

给定:

class Foo {
Foo() {};
};

class Bar {
static int counter;
Bar() { ++counter; }
}

很明显,Foo::Foo 是线程安全的,而 Bar::bar 不是。

此外,很明显,如果一个函数的编写方式使其不是线程安全的,那么显然将它放在构造函数中会使该构造函数不是线程安全的。

但是,关于构造函数,我是否需要担心额外的陷阱? IE。一段带有互斥锁/锁的代码,如果它在函数体中,它将是线程安全的,但如果我将它放在构造函数中,基于 C++ 构造函数的复杂性,奇怪的事情就会发生并且它不再是线程安全的?

谢谢!

编辑:您可以假设我使用的是 g++。

最佳答案

我会避免在线程使用的对象中使用任何静态值。

为什么不传入需要的值作为构造函数的参数?

或者实际上,在线程中的构造函数周围放置一个互斥体。我不会让其他类(class)对此负责。

关于C++ g++ 线程安全构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270577/

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