Studiando la comunicazione tra processi nel sistema operativo, ho scoperto che la comunicazione asincrona può essere costruita sulla comunicazione sincrona. Ma non mi è chiaro come può essere fatto. Mi spieghi ? :)
Per prima cosa, penso che abbiamo bisogno di una buona comprensione dei termini Sincrono e Asincrono.
Questi termini si riferiscono non a un messaggio comunicato tra processi ma al modello di invio o ricezione di tale messaggio relativo al calcolo in corso nel processo . Pertanto, la stessa comunicazione - lo stesso messaggio esatto - potrebbe essere asincrona per un processo e sincronizzazione per l'altro.
I / O sincrono viene anche chiamato I / O di blocco; I / O asincrono è un I / O non bloccante. Ancora una volta questi termini evidenziano l'approccio all'invio / ricezione relativo all'informatica interna di un processo di invio o di ricezione (piuttosto che la descrizione della comunicazione stessa).
Se si utilizza I / O sincrono per inviare o ricevere un messaggio, il processo si bloccherà fino a quando il messaggio non sarà completamente inviato o ricevuto. Pertanto, sembrerebbe molto difficile convertirlo in un approccio asincrono.
Tuttavia, è possibile creare un nuovo thread solo per eseguire un'operazione di I / O, mentre il thread principale oi thread esistenti continuano a essere eseguiti. Ciò fornisce un thread sacrificale che bloccherà la richiesta I / O sincrona, mentre gli altri thread possono continuare a essere eseguiti. Pertanto, l'operazione di I / O apparirebbe asincrona al main / altri thread, nonostante l'utilizzo di I / O di blocco nel nuovo thread.
(In assenza di thread, potresti fare lo stesso con più processi.)
Leggi altre domande sui tag operating-systems