#include <iostream>
#include <thread>
#include <chrono>
struct AbstractImage
{
private:
static void LoadImages();
struct LoadImagesStarter
{
LoadImagesStarter()
{
std::thread(AbstractImage::LoadImages).detach();
}
};
static const LoadImagesStarter ImageLoader;
};
//...
const AbstractImage::LoadImagesStarter AbstractImage::ImageLoader;
void AbstractImage::LoadImages()
{
using namespace std::chrono_literals;
std::cout << '[' << std::this_thread::get_id() << "] Loading Images..." << std::endl;
std::this_thread::sleep_for(2s);
std::cout << '[' << std::this_thread::get_id() << "] Done" << std::endl;
}
int main()
{
using namespace std::chrono_literals;
std::cout << '[' << std::this_thread::get_id() << "] Sleeping 5s..." << std::endl;
std::this_thread::sleep_for(5s);
std::cout << '[' << std::this_thread::get_id() << "] Done" << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8Y2hyb25vPgoKc3RydWN0IEFic3RyYWN0SW1hZ2UKewpwcml2YXRlOgogICAgc3RhdGljIHZvaWQgTG9hZEltYWdlcygpOwoKICAgIHN0cnVjdCBMb2FkSW1hZ2VzU3RhcnRlcgogICAgewogICAgICAgIExvYWRJbWFnZXNTdGFydGVyKCkKICAgICAgICB7CiAgICAgICAgICAgIHN0ZDo6dGhyZWFkKEFic3RyYWN0SW1hZ2U6OkxvYWRJbWFnZXMpLmRldGFjaCgpOwogICAgICAgIH0KICAgIH07CgogICAgc3RhdGljIGNvbnN0IExvYWRJbWFnZXNTdGFydGVyIEltYWdlTG9hZGVyOwp9OwovLy4uLgoKY29uc3QgQWJzdHJhY3RJbWFnZTo6TG9hZEltYWdlc1N0YXJ0ZXIgQWJzdHJhY3RJbWFnZTo6SW1hZ2VMb2FkZXI7Cgp2b2lkIEFic3RyYWN0SW1hZ2U6OkxvYWRJbWFnZXMoKQp7Cgl1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm9fbGl0ZXJhbHM7CglzdGQ6OmNvdXQgPDwgJ1snIDw8IHN0ZDo6dGhpc190aHJlYWQ6OmdldF9pZCgpIDw8ICJdIExvYWRpbmcgSW1hZ2VzLi4uIiA8PCBzdGQ6OmVuZGw7CglzdGQ6OnRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoMnMpOwoJc3RkOjpjb3V0IDw8ICdbJyA8PCBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSA8PCAiXSBEb25lIiA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkKewoJdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vX2xpdGVyYWxzOwoJc3RkOjpjb3V0IDw8ICdbJyA8PCBzdGQ6OnRoaXNfdGhyZWFkOjpnZXRfaWQoKSA8PCAiXSBTbGVlcGluZyA1cy4uLiIgPDwgc3RkOjplbmRsOwoJc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKDVzKTsKCXN0ZDo6Y291dCA8PCAnWycgPDwgc3RkOjp0aGlzX3RocmVhZDo6Z2V0X2lkKCkgPDwgIl0gRG9uZSIgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=