//----------------------------------------------------------- // boost.cc //----------------------------------------------------------- #include // boost::thread #include // signal #include // puts #include // pthread_kill #include // alarm, pause //----------------------------------------------------------- boost::thread cliente, servidor; //----------------------------------------------------------- void manejador_sigusr1(int) { puts("[servidor]: petición recibida\n" "[servidor]: respuesta enviada"); pthread_kill(cliente.native_handle(), SIGUSR2); } //----------------------------------------------------------- void manejador_sigusr2(int) { puts("[cliente ]: respuesta recibida\n" "[cliente ]: petición enviada"); pthread_kill(servidor.native_handle(), SIGUSR1); } //----------------------------------------------------------- int main() { alarm(1); servidor = boost::thread([&] { signal(SIGUSR1, manejador_sigusr1); cliente = boost::thread([&] { signal(SIGUSR2, manejador_sigusr2); puts("[cliente ]: petición enviada"); pthread_kill(servidor.native_handle(), SIGUSR1); while (true) pause(); }); cliente.join(); }); servidor.join(); } //-----------------------------------------------------------