#include <thread> // std::thread, std::this_thread::sleep_for
#include <chrono> // std::chrono::seconds
#include <iostream>
void pause_thread( int n)
{
std:: this_thread :: sleep_for ( std:: chrono :: seconds ( n) ) ;
std:: cout << "pause of " << n << " seconds ended\n " ;
}
int main( )
{
std:: cout << "Spawning 3 threads...\n " ;
std:: thread t1 ( pause_thread,1 ) ;
std:: thread t2 ( pause_thread,2 ) ;
std:: thread t3 ( pause_thread,3 ) ;
std:: cout << "Done spawning threads. Now waiting for them to join:\n " ;
t1.join ( ) ;
t2.join ( ) ;
t3.join ( ) ;
std:: cout << "All threads joined!\n " ;
return 0 ;
}
I2luY2x1ZGUgPHRocmVhZD4gICAgICAgICAvLyBzdGQ6OnRocmVhZCwgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yCiNpbmNsdWRlIDxjaHJvbm8+ICAgICAgICAgLy8gc3RkOjpjaHJvbm86OnNlY29uZHMKI2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBwYXVzZV90aHJlYWQoaW50IG4pCnsKICBzdGQ6OnRoaXNfdGhyZWFkOjpzbGVlcF9mb3IgKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKG4pKTsKICBzdGQ6OmNvdXQgPDwgInBhdXNlIG9mICIgPDwgbiA8PCAiIHNlY29uZHMgZW5kZWRcbiI7Cn0KCmludCBtYWluKCkKewogIHN0ZDo6Y291dCA8PCAiU3Bhd25pbmcgMyB0aHJlYWRzLi4uXG4iOwogIHN0ZDo6dGhyZWFkIHQxIChwYXVzZV90aHJlYWQsMSk7CiAgc3RkOjp0aHJlYWQgdDIgKHBhdXNlX3RocmVhZCwyKTsKICBzdGQ6OnRocmVhZCB0MyAocGF1c2VfdGhyZWFkLDMpOwogIHN0ZDo6Y291dCA8PCAiRG9uZSBzcGF3bmluZyB0aHJlYWRzLiBOb3cgd2FpdGluZyBmb3IgdGhlbSB0byBqb2luOlxuIjsKICB0MS5qb2luKCk7CiAgdDIuam9pbigpOwogIHQzLmpvaW4oKTsKICBzdGQ6OmNvdXQgPDwgIkFsbCB0aHJlYWRzIGpvaW5lZCFcbiI7CgogIHJldHVybiAwOwp9Cg==