Я работаю над многопоточным кодом pthread, и каждый поток вызывает read() в дескрипторе файла. read() - это блокирующий вызов, поэтому он ждет данных. Но я хочу, чтобы он подождал только 3 секунды, чтобы ждать данных.setTimeOut Эквивалент в c?
Я думал об использовании alarm() и hadling SIGALRM, но если я поднимаю тревогу в одном потоке, все потоки получат сигнал SIGALRM, и все они откажутся от чтения. Как мне это сделать?
select устарел. epoll - это то, что люди используют в наши дни. –
О, да, я думаю, это должно сработать. Я никогда не рассматривал это использование select() раньше. Я никогда не рассматривал select() для любой другой вещи, кроме мультиплексирования. –
@ VladLazarenko: «устаревшие» - это немного сильная формулировка. 'epoll' не переносится, и' select' не уходит в ближайшее время. Конечно, есть более современные альтернативы, но они также (ИМО) часто сложнее получить право. – Mat