【发布时间】:2021-12-30 18:29:37
【问题描述】:
所以在我的代码中有 sn-p:
std::atomic<uint>* atomic_buffer = reinterpret_cast<std::atomic<uint>*>(data);
const size_t num_atomic_elements = svm_data_size / sizeof(std::atomic<uint>);
for (i = 0; i < num_atomic_elements; i++)
{
std::atomic_init(&atomic_buffer[i], std::atomic<uint>(0));
}
但是,在执行时,返回的错误是:
error: no matching function for call to 'atomic_init'
...
note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned int' vs. 'int')
atomic_init(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
有人遇到过类似的问题吗?
干杯。
【问题讨论】:
-
data是否真的拥有一组活动的atomic<uint>对象?为什么不只使用placement-new? -
你真的需要
reinterpret_cast吗?你能以常规方式创建原子吗? -
如果
std::atomic_init的第一个参数是std::atomic<uint>*,则第二个参数需要是uint。 -
什么是
data?data指向哪里?