In jedem E/A-Betrieb besteht die Möglichkeit, eine Auslösung auf der Festplatte (oder einem anderen langsamen E/A-Gerät) und zurück zu benötigen. Ein "blockierender" Anruf ist einfach einer, der wartet, während die Round-Trip-E/A ausgeführt wird - in der Zwischenzeit Ihre. So wie Sie warten können, bis das Lesen erledigt ist, können Sie auch auf das Schreiben warten.
Dies ist normalerweise nicht so nützlich für herkömmliche Anwendungen - Sie möchten dem Betriebssystem mitteilen, dass es Ihre Daten schreiben soll, und dann ist es nicht mehr Ihr Problem. Es wird zu Ihrem Problem, wenn Sie versuchen, die auf dem E/A-Gerät (z. B. auf der Festplatte) gespeicherte Datenintegrität zu gewährleisten, z. B. in einem relationalen Datenbanksystem. (Beachten Sie jedoch, dass die Blockierung nicht die einzige Methode ist, mit der Sie Ihre Schreibvorgänge garantieren können. Beachten Sie außerdem, dass bei der zunehmenden Komplexität von Computern mehrere Zwischenspeicherungen die tatsächliche Blockierung stören können.)
Disk-Dateien blockieren im UNIX-Sinne * nicht * - sie werden als "schnell" betrachtet, was bedeutet, dass der Prozess in den Wartezustand der Festplatte übergeht, anstatt zu schlafen. 'epoll()' wird * immer * 'POLLOUT' (und' POLLIN') für Disk-Dateien melden. – caf