C++ - How to initialise an array of atomics?

后端 未结 2 1053
伪装坚强ぢ
伪装坚强ぢ 2021-01-18 03:07
array< atomic_size_t, 10 > A;

Neither atomic_init(A,{0}) nor A = {ATOMIC_VAR_INIT(0)} seem to work, returning an un

2条回答
  •  自闭症患者
    2021-01-18 03:44

    std::array arr = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    

    or if you can compile for C++11

    std::array arr{{{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0} }}; // double braces required
    

    Example: https://www.ideone.com/Mj9kfE

    Edit:

    It just occurred to me that you are trying to store atomics, which are not copyable, into a collection that would require they be copyable (Note: I can't get to my copy of the standard at the moment. I know this holds true for the other collections, but I'm unsure if it holds true for std::array as well).

    A similar problem was posted a while back: Thread-safe lock-free array

提交回复
热议问题