C++ atomic runtime error

321
30 января 2019, 21:30

Программа компилируеться, но выводит всегда одно и тоже число, и не выходит корректно

Код:

#include <iostream>
#include <functional>
#include <atomic>
#include <thread>
#include <chrono>
using namespace std;
class myObject{
    public:
        void setContent(int i){
            this->cont = i;
            return;
        }
        int getContent(){
            return this->cont;
        }
    private:
        int cont;
};
void myfunc(atomic<myObject*>* ptr,bool* isNeed){
    auto target =  ptr->load();
    while (*isNeed){
        for (int i=0;i<=100;i++){
            target = ptr->load();
            target->setContent(i%3*i/i%2);
            ptr->store(target);
            //this_thread::yield();
        }
    }
    return;
}
void myfunc2(atomic<myObject*>* ptr,bool* isNeed){
    auto target =  ptr->load();
    while(*isNeed){
        target=ptr->load();
        cout << "Content is:"<<target->getContent()<<"\n";
        ptr->store(target);
    }
    return;
}
int main(){
    cout << "Testing: \n";
    atomic<myObject*>* target = new atomic<myObject*>();
    target->store(new myObject);
    bool isNeed1=true;
    thread gen(myfunc,target,&isNeed1);gen.detach();
    //gen.detach();
    thread consume(myfunc2,target,&isNeed1);consume.detach();
    //consume.detach();
    this_thread::sleep_for(std::chrono::seconds(100));
    isNeed1 = false;
    this_thread::sleep_for(std::chrono::milliseconds(10));
    delete target;
    cout << "Trigger set to false;\n";
    cin.get();
    return 0;
}

Компилятор даже warning не выдает

READ ALSO
Поиск по базе данных с использованием фильтров Qt

Поиск по базе данных с использованием фильтров Qt

В задании сказанно реализовать приложение, которое будет искать в базе данных элементы по заданным параметрамКоличество параметров и их названия...

238
Битовые операции. Разбор xml файла С++

Битовые операции. Разбор xml файла С++

Подскажите, есть файл вида: testxml

199
Вывод количества букв в строке

Вывод количества букв в строке

Можно ли при помощи printf подсчитать количество букв в строке? если можно то каким способом или можно это сделать по другому?

190
Считывание нажатия стрелок С++ Linux Ubuntu

Считывание нажатия стрелок С++ Linux Ubuntu

Пишу консольную игру 2048 и столкнулся с проблемой отсутствия стандартных функций С++ считывания нажатий на стелки на клавиатуреgetch() не работает,...

223