fork(2) download
  1. #include <iostream>
  2. #include <future>
  3. #include <thread>
  4. #include <vector>
  5. #include <chrono>
  6.  
  7. using namespace std;
  8.  
  9. int main() {
  10. auto start = chrono::steady_clock::now();
  11. auto timestamp = [start]( ostream & s )->ostream& {
  12. auto now = chrono::steady_clock::now();
  13. auto elapsed = chrono::duration_cast<chrono::microseconds>(now - start);
  14. return s << "[" << elapsed.count() << "us] ";
  15. };
  16.  
  17. vector<future<int>> futures;
  18. for( int i = 0; i < 5; i++ )
  19. {
  20. futures.emplace_back( async(launch::async,
  21. [=](){
  22. timestamp(cout) << "Launch " << i << endl;
  23. return i;
  24. } ) );
  25. }
  26.  
  27. this_thread::sleep_for( chrono::milliseconds(100) );
  28.  
  29. for( auto & f : futures ) timestamp(cout) << "Get " << f.get() << endl;
  30.  
  31. return 0;
  32. }
Success #stdin #stdout 0s 91072KB
stdin
Standard input is empty
stdout
[42us] Launch 4
[85us] Launch 3
[95us] Launch 2
[103us] Launch 1
[109us] Launch 0
[100134us] Get 0
[100158us] Get 1
[100162us] Get 2
[100165us] Get 3
[100168us] Get 4