LINUX.ORG.RU

История изменений

Исправление slovazap, (текущая версия) :

Зачем так сложно?

class myclass {
    volatile bool exitflag = false;
    std::map<std::string, std::string> map;
    std::thread thread;

public:
    myclass() : thread([this]() {
            while (!exitflag) {
                std::cerr << "processing" << std::endl;
            }
            std::cerr << "done" << std::endl;
        }) {
    }

    ~myclass() {
        exitflag = true;
        thread.join();
    }
};

Ну и да, естественно в реальном приложении вместо busyloop нужна condition variable, тогда и volatile можно будет убрать.

Исходная версия slovazap, :

Зачем так сложно?

class myclass {
    volatile bool exitflag = false;
    std::map<std::string, std::string> map;
    std::thread thread;

public:
    myclass() : thread([this]() {
            while (!exitflag) {
                std::cerr << "processing" << std::endl;
            }
            std::cerr << "done" << std::endl;
        }) {
    }

    ~myclass() {
        exitflag = true;
        thread.join();
    }
};

Ну и да, естественно вместо busyloop нужна condition variable, тогда volatile можно будет убрать.