gpt4 book ai didi

c++ - 什么时候出队大小调用不是线程安全的?

转载 作者:行者123 更新时间:2023-12-02 09:55:32 25 4
gpt4 key购买 nike

通常,对标准容器的操作为not thread safe(mostly)。重新分配发生时,size会调用std::vector,例如may fail

由于dequeue does not reallocate or move the elements像标准 vector 一样,因此在出队上调用size时是否仍存在条件可能不安全?最有可能的情况似乎是在进行size调用时在不同的线程中添加/删除元素,但是由于访问了integer is mostly safe,我很难考虑如何从单独的线程中调用size是有问题的。

最佳答案

曾经是。因为在任何标准中都不需要如此。

GCC的实现https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_deque.h是减法的结果:

      // [23.2.1.2] capacity
/** Returns the number of elements in the %deque. */
size_type
size() const _GLIBCXX_NOEXCEPT
{ return this->_M_impl._M_finish - this->_M_impl._M_start; }

即使将大小存储在 size_t甚至 uint8_t中,并且 size()是返回此变量的内联函数,C++也无法保证不同int的原子性。除非可以肯定,否则切勿假设某些东西是线程安全的。

关于c++ - 什么时候出队大小调用不是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60459754/

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