Привествую всех! Вопрос! Нужно заводить одновременно 32 таймаута! Какими таймерами лучше пользоваться, чтоб процесс спал, пока какой нибудь не сработает?
как таковых таймеров я не знаю... но проблему "усыпления" и синхронизаци решею с помощью sem_trywait
в самом простом виде это так
// глобальна настолько, чтоб была видна внутри потока
sem_post(&key_pressed_sem);
// собственно поток
while (1)
{
if (sem_trywait(&key_pressed_sem) != 0)
{ // ничего не произошло - сплю
nanosleep(&timeout, &rest);
}
else
{ // что-то случилось - работаю
printf("deal with it!\n");
break;
}
}
// разблокируй поток
sem_post(&key_pressed_sem);