gpt4 book ai didi

c++ - 共享指针和多线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:41 24 4
gpt4 key购买 nike

我现在一直在使用以下代码进行相当多的测试并且没有遇到任何问题,但是我刚刚意识到代码可能不是线程安全的并且会导致竞争条件。

...
std::shared_ptr<T> ptr(new T(bar));

auto foo = [=] (tbb::blocked_range<int> r) {
std::shared_ptr<T> p(ptr); // <- Is this threadsafe?
// ... do stuff
};

tbb::parallel_for(tbb::blocked_range<int>(0,x), foo);
...

我的问题是关于标记的行,因为我认为在共享指针的复制构造期间,由于引用计数的增加可能会出现竞争条件。

虽然我可以通过引用捕获指针并直接使用它来避免这种情况,但我仍然对解决方案感兴趣。

最佳答案

不,如果您在打开多线程选项的情况下进行编译,则该库应该使用原子操作或锁定共享指针的引用计数。您发布的代码没有线程安全问题。

关于c++ - 共享指针和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581466/

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