2015-02-23 11 views
6

Non capisco pienamente cosa significa quando si dice qualcosa del tipo: "asincrono lettura e scrittura" o "sincrono lettura e scrittura".terminologia sincrona e asincrona quando si parla di prese

darò esempi per dimostrare la mia comprensione della terminologia e corretto se sbaglio:

  • leggere e scrivere su un socket in una modalità di blocco è considerato sincrono.
  • Leggere e scrivere su un socket in modalità non bloccante è considerato asincrono.
  • La lettura e scrittura su una presa che utilizza I/O sovrapposti è considerata asincrona.

risposta

4

Leggere e scrivere su una presa in modalità di blocco è considerato sincrono.

Sì.

Leggere e scrivere su un socket in modalità non bloccante è considerato asincrono.

No. È sincrono. L'operazione completa o non riesce in linea nel thread corrente.

Leggere e scrivere su una presa che utilizza I/O sovrapposti è considerato asincrono.

Corretto. La chiamata di funzione registra l'operazione da eseguire, che procede indipendentemente dal thread corrente e è necessaria un'operazione successiva per determinarne il successo o l'errore, oppure è presente una callback di completamento.

0

Penso che sia relativo al thread di esecuzione della chiamata.

Synchronous significa che il thread di esecuzione dell'esecuzione è "sincronizzato" con l'operazione. Quindi, quando la chiamata ritorna, il thread chiamante ha i dati dell'operazione disponibili per l'uso.

Asincrono significa che il thread di chiamata di esecuzione è non in sincronizzazione con l'operazione. Quindi, quando il thread chiamante ritorna dall'operazione, potrebbe avere dati dall'operazione o potrebbe non farlo; ha bisogno di trattare con entrambi i casi.

+0

La sua definizione di I/O non bloccante * non è * corretta in base alla spiegazione. – EJP

+0

Non lo vedo. Perché non lo è? – Xiao

+0

Quando viene restituita una chiamata non bloccante, il thread chiamante ha i dati dell'operazione disponibili per l'uso o un errore. In entrambi i casi la chiamata è completa. In I/O asincrona, l'operazione non è completa quando la chiamata ritorna; devi chiamare qualcos'altro o attendere il callback del completamento. La tua definizione ha bisogno di un po 'di lavoro, ma in entrambi i casi non ammette l'I/O non bloccante considerato asincrono. – EJP

2

No. Un'operazione su un socket non bloccante è sincrona.

In Windows, "I/O sovrapposto" è un sinonimo di "I/O asincrono".

Problemi correlati