fork(1) download
  1. #include <iostream>
  2. #include <thread>
  3. #include <chrono>
  4.  
  5. struct AbstractImage
  6. {
  7. private:
  8. static void LoadImages();
  9.  
  10. struct LoadImagesStarter
  11. {
  12. LoadImagesStarter()
  13. {
  14. std::thread(AbstractImage::LoadImages).detach();
  15. }
  16. };
  17.  
  18. static const LoadImagesStarter ImageLoader;
  19. };
  20. //...
  21.  
  22. const AbstractImage::LoadImagesStarter AbstractImage::ImageLoader;
  23.  
  24. void AbstractImage::LoadImages()
  25. {
  26. using namespace std::chrono_literals;
  27. std::cout << '[' << std::this_thread::get_id() << "] Loading Images..." << std::endl;
  28. std::this_thread::sleep_for(2s);
  29. std::cout << '[' << std::this_thread::get_id() << "] Done" << std::endl;
  30. }
  31.  
  32. int main()
  33. {
  34. using namespace std::chrono_literals;
  35. std::cout << '[' << std::this_thread::get_id() << "] Sleeping 5s..." << std::endl;
  36. std::this_thread::sleep_for(5s);
  37. std::cout << '[' << std::this_thread::get_id() << "] Done" << std::endl;
  38. return 0;
  39. }
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
[47389141785088] Sleeping 5s...
[47389143897856] Loading Images...
[47389143897856] Done
[47389141785088] Done