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