Ich arbeite an einem Pthread Multithread-Code und jeder Thread ruft read() auf einem Dateideskriptor. read() ist ein blockierender Aufruf, der auf Daten wartet. Aber ich möchte, dass es nur 3 Sekunden wartet, um auf Daten zu warten.setTimeOut Entspricht in c?
Ich dachte an die Verwendung von alarm() und hadling SIGALRM aber wenn ich Alarm in einem Thread auslösen, werden alle Threads dieses SIGALRM-Signal bekommen und alle von ihnen werden auflesen. Wie kann ich es tun?
select ist veraltet. epoll ist das, was Menschen heutzutage benutzen. –
oh ja, ich denke, das sollte funktionieren. Ich habe nie darüber nachgedacht, select() zu verwenden. Ich habe nie ausgewählt() für etwas anderes als Multiplexing. –
@VladLazarenko: "Deprecated" ist ein bisschen eine starke Formulierung dafür. 'epoll' ist nicht tragbar, und' select' wird in absehbarer Zeit nicht verschwinden. Sicher, es gibt modernere Alternativen, aber sie sind auch (IMO) oft schwerer zu bekommen. – Mat