#include <thread>
#include <atomic>
#include <chrono>
#include <iostream>
std::atomic_bool stop_thread;
std::thread thd;
int main()
{
thd = std::thread([]{
while ( ! stop_thread.load() )
std::this_thread::sleep_for(std::chrono::milliseconds(200));
atexit([] { std::cout << "Exit thread\n"; });
});
atexit([]{
stop_thread.store(true);
thd.join();
});
std::cout << "Exiting\n";
return 0;
}
I2luY2x1ZGUgPHRocmVhZD4KI2luY2x1ZGUgPGF0b21pYz4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKCnN0ZDo6YXRvbWljX2Jvb2wgc3RvcF90aHJlYWQ7CnN0ZDo6dGhyZWFkIHRoZDsKCmludCBtYWluKCkKewogICAgdGhkID0gc3RkOjp0aHJlYWQoW117CiAgICAgICAgd2hpbGUgKCAhIHN0b3BfdGhyZWFkLmxvYWQoKSApCiAgICAgICAgICAgIHN0ZDo6dGhpc190aHJlYWQ6OnNsZWVwX2ZvcihzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKDIwMCkpOwogICAgICAgIGF0ZXhpdChbXSB7IHN0ZDo6Y291dCA8PCAiRXhpdCB0aHJlYWRcbiI7IH0pOwogICAgfSk7CgogICAgYXRleGl0KFtdewogICAgICAgIHN0b3BfdGhyZWFkLnN0b3JlKHRydWUpOwogICAgICAgIHRoZC5qb2luKCk7CiAgICB9KTsKCiAgICBzdGQ6OmNvdXQgPDwgIkV4aXRpbmdcbiI7CiAgICByZXR1cm4gMDsKfQoK