//----------------------------------------------------------- // boost.cc //----------------------------------------------------------- #include #include #include #include #include #include //----------------------------------------------------------- boost::thread cliente, servidor; //----------------------------------------------------------- void manejador_sigusr1(int) { signal(SIGUSR1, manejador_sigusr1); std::cout << "[servidor]: petición recibida\n"; std::cout << "[servidor]: respuesta enviada\n"; pthread_kill(cliente.native_handle(), SIGUSR2); } //----------------------------------------------------------- void manejador_sigusr2(int) { signal(SIGUSR2, manejador_sigusr2); std::cout << "[cliente ]: respuesta recibida\n"; std::cout << "[cliente ]: petición enviada\n"; pthread_kill(servidor.native_handle(), SIGUSR1); } //----------------------------------------------------------- int main() { alarm(1); servidor = boost::thread([&] { signal(SIGUSR1, manejador_sigusr1); cliente = boost::thread([&] { signal(SIGUSR2, manejador_sigusr2); std::cout << "[cliente ]: petición enviada\n"; pthread_kill(servidor.native_handle(), SIGUSR1); boost::this_thread::sleep_for(boost::chrono::seconds(1)); }); cliente.join(); }); servidor.join(); } //-----------------------------------------------------------