Alcuni documenti sugli interni di runtime di GHC indicano che utilizza epoll/kqueue/poll per rilevare se un descrittore di file è pronto per la lettura/scrittura.In che modo il runtime di GHC gestisce l'I/O dei file?
Posso capire come è fatto per I/O socket. Ma per quanto riguarda l'accesso ai file su disco? Il sondaggio syscall non funziona con i file ordinari, solo con I/O socket; vero?
L'unica opzione che posso immaginare qui sta usando un pool di thread per chiamate di sistema di blocco, un thread-per-richiesta ...
Su piattaforme POSIX (come Linux, OSX e BSD) un descrittore è un numero intero piccolo e può essere un file, una pipe, un socket o qualcosa di completamente diverso. E supportano per lo più le stesse funzioni di supporto, come il polling. –
@JoachimPileborg poll sul file disco fd restituirà sempre che è pronto per IO, mentre in realtà si bloccherebbe. – user3489275
@JoachimPileborg Mi dispiace ma questo è BS. Non importa quanto stai cercando di leggere, potrebbe comunque bloccare (anche con O_NONBLOCK). – user3489275