#include #include #include #include #include #include using namespace std; void* cliente(void *); void* servidor(void *); int main(int argc, char *argv[]) { sem_t *sem = new sem_t; if (sem_init(sem, 0, 0) == -1) { cerr << "Error creando el semaforo: " << strerror(errno) << endl; return EXIT_FAILURE; } pthread_t hSrv; pthread_t hCln; pthread_create(&hSrv, nullptr, servidor, (void *) sem); pthread_create(&hCln, nullptr, cliente, (void *) sem); pthread_join(hSrv, nullptr); pthread_join(hCln, nullptr); return EXIT_SUCCESS; } void* cliente(void *arg) { sem_t *sem = (sem_t *) arg; for (;;) { sleep(10); sem_post(sem); } } void* servidor(void *arg) { sem_t *sem = (sem_t *) arg; for (;;) { cout << "Esperando para imprimir" << endl; sem_wait(sem); cout << "Impresion lista" << endl; } }