//--------------------------------------------------------- // barrera.cc: esqueleto para completar //--------------------------------------------------------- #include // alarm #include // cout endl #include // mutex #include // string #include // thread //--------------------------------------------------------- const size_t N = 8; //--------------------------------------------------------- class barrera_t { public: barrera_t(unsigned _limite) {} void esperar() {} } barrera(N); //--------------------------------------------------------- void hebra(size_t yo) { std::string antes = std::to_string(yo) + ": antes\n", despues = std::to_string(yo) + ": después\n"; while(true) { std::cout << antes << std::flush; barrera.esperar(); std::cout << despues << std::flush; } } //--------------------------------------------------------- int main() { ualarm(150000, 0); // 150ms std::thread t[N]; for (size_t i = 0; i < N; ++i) t[i] = std::thread(hebra, i); for (auto& i: t) i.join(); } //---------------------------------------------------------