#c 11
#c 11
Вопрос:
Пытаюсь запустить какой-то многопоточный фрагмент кода, и компилятор clang llvm жалуется, что std::atomic<double>::compare_exchange_weak()
не имеет правильного количества аргументов. Кто-нибудь может, пожалуйста, помочь?
спасибо, Амин
static std::atomic<int> counter(0);
std::atomic<double> x = {0.0000000003};
template class std::vector<double>;
struct TestVector
{
std::vector<double> Vect;
explicit TestVector(std::size_t n) : Vect(std::vector<double>(n))
{
for(auto i = 0; i< Vect.size(); i)
{
Vect[i] = std::cos(i*M_PI/2.0);
}
}
};
const TestVector Z(30000);
void TestOnAtomics()
{
int j { 0};
double y = (Z.Vect)[j] 0.00000005;
const double u = 1.22222222;
while(!(x.compare_exchange_weak(y,u)) amp;amp; j<((Z.Vect).size() - 1))
{
counter;
x.store(std::move((Z.Vect)[j]), std::memory_order::memory_order_seq_cst);
j;
std::cout << "nMy value is " << x << " and that of y is: " << y << "n";
y = (Z.Vect)[j];
};
}
Комментарии:
1. Что он сказал вам о кандидатах?
2. Кроме того, в коде в вашем вопросе отсутствуют
#include
строки.3. Не знаком с atomic, но согласно документации, которую я нашел, std::atomic_compare_exchange_weak() принимает 3 аргумента в C 11. Вы указали 2.
4. @Chipster это бесплатная функция, OP использует функцию-член
5. пожалуйста, укажите полную ошибку