#include <iostream>
#include <iomanip>
#include <thread>
using namespace std;
void print( )
{
cout << "Hello!!" ;
}
void print2( )
{
for ( int i = 0 ; i < 8 ; ++ i)
{
cout << "meanwhile...\n " ;
this_thread:: sleep_for ( chrono:: milliseconds ( 200 ) ) ;
}
}
thread test( )
{
this_thread:: sleep_for ( chrono:: milliseconds ( 200 ) ) ;
return thread( [ & ] ( ) {
this_thread:: sleep_for ( chrono:: milliseconds ( 400 ) ) ;
cout << "Connection is successful! Wait...\n " ;
this_thread:: sleep_for ( chrono:: milliseconds ( 400 ) ) ;
cout << "Setting up the environment!\n " ;
this_thread:: sleep_for ( chrono:: milliseconds ( 400 ) ) ;
cout << "All is done!\n " ; } ) ;
}
int main( int argc, char * argv[ ] )
{
auto t = test( ) ;
print2( ) ;
t.join ( ) ;
print( ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHRocmVhZD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHByaW50KCkKewogICAgY291dDw8IkhlbGxvISEiOwp9Cgp2b2lkIHByaW50MigpCnsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCA4OyArK2kpCiAgICB7CiAgICAgICAgY291dCA8PCAibWVhbndoaWxlLi4uXG4iOwogICAgICAgIHRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoY2hyb25vOjptaWxsaXNlY29uZHMoMjAwKSk7CiAgICB9Cn0KCnRocmVhZCB0ZXN0KCkKewogICAgdGhpc190aHJlYWQ6OnNsZWVwX2ZvcihjaHJvbm86Om1pbGxpc2Vjb25kcygyMDApKTsKICAgIHJldHVybiB0aHJlYWQoWyZdKCkgewogICAgICAgIHRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoY2hyb25vOjptaWxsaXNlY29uZHMoNDAwKSk7CiAgICAgICAgY291dCA8PCAiQ29ubmVjdGlvbiBpcyBzdWNjZXNzZnVsISBXYWl0Li4uXG4iOwogICAgICAgIHRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoY2hyb25vOjptaWxsaXNlY29uZHMoNDAwKSk7CiAgICAgICAgY291dCA8PCAiU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQhXG4iOwogICAgICAgIHRoaXNfdGhyZWFkOjpzbGVlcF9mb3IoY2hyb25vOjptaWxsaXNlY29uZHMoNDAwKSk7CiAgICAgICAgY291dCA8PCJBbGwgaXMgZG9uZSFcbiI7fSk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICogYXJndltdKQp7CiAgICBhdXRvIHQgPSB0ZXN0KCk7CiAgICBwcmludDIoKTsKICAgIHQuam9pbigpOwogICAgcHJpbnQoKTsKfQo=