2009-10-20 11 views
20

Quindi sono un po 'confuso da questa terminologia.Perché i processi asincroni non vengono chiamati sincroni?

Tutti si riferiscono all'elaborazione "asincrona" come esecuzione di processi diversi su thread separati, il che dà l'illusione che questi processi siano in esecuzione nello stesso momento.

Questa non è la definizione della parola asincrona.

a⋅syn⋅chro⋅nous 
–adjective 
1. not occurring at the same time. 
2. (of a computer or other electrical machine) having each operation started only after the preceding operation is completed. 

Cosa non capisco qui?

+4

Non so. Ma penso che sia divertente che la definizione n. 2 sia l'esatto contrario di come i programmatori usano la parola. –

+1

Ecco perché di solito uso Google: "define: * word *" per ottenere le mie definizioni. Ottieni quattro o cinque o venti definizioni contemporaneamente. –

+1

Penso che la tua definizione della parola "asincrono" sia errata. –

risposta

10

Significa che i due thread non sono in esecuzione in sincrono, cioè, non sono entrambi in esecuzione sulla stessa timeline.

Penso che sia un caso di scienziati informatici che sono troppo intelligenti riguardo al loro uso delle parole.

La sincronizzazione, in questo contesto, suggerirebbe che entrambi i thread inizino e finiscano allo stesso tempo. Asincronia in questo senso, significa che entrambi i thread sono liberi di iniziare, eseguire e terminare come richiedono.

9

La parola "sincrono" implica che una chiamata di funzione sarà sincronizzata con qualche altro evento.

Asincrono implica che non si verifica tale sincronizzazione.

Sembra che la definizione che hai lì dovrebbe essere la definizione di "concorrente" o qualcosa del genere. Questa definizione sembra sbagliata.


PS:

Ecco la definizione Wikizionario:

asynchronous

  1. Non sincrono; si verificano in momenti diversi.
  2. (calcolo, di una richiesta o di un messaggio) che consente al client di continuare durante l'elaborazione.

Quale che è lo esatto di fronte a ciò che hai postato.

+0

Ho ottenuto la mia definizione da: http://dictionary.reference.com/browse/Asynchronous – Balk

+0

Ho trovato le definizioni Balk pubblicate qui: http://dictionary.reference.com/browse/asynchronous Sembra la definizione della parola varia drasticamente a seconda del contesto. –

+1

Non sto dicendo che l'hai inventato, sto solo dicendo che le definizioni # 2 delle due fonti sono in diretta opposizione. –

2

Direi è perché non sono sincronizzati;)

In altre parole ... se un processo viene interrotto, uccisi, o è in attesa di qualcosa, l'altro continuerà a

1

La tua seconda definizione è più utile qui:

2. [...] having each operation started only after the preceding operation is completed. 

Quando si effettua una chiamata asincrona, quella chiamata potrebbe non essere completato prima di iniziare l'operazione successiva. Quando la chiamata è sincrona, lo sarà.

+1

La tua descrizione è corretta, ma è l'opposto di quello che dice questa definizione ... – Guffa

0

Significa davvero che un evento asincrono sta accadendo indipendentemente da altri eventi mentre un evento sincrono sta accadendo in funzione di altri eventi.

5

Credo che il termine sia stato utilizzato per la prima volta per la comunicazione sincrona contro quella asincrona. Lì sincrono significa che le due parti comunicanti hanno un segnale di clock comune in cui corrono, quindi corrono in parallelo. La comunicazione asincrona ha invece un segnale pronto, quindi una parte richiede i dati e riceve un segnale quando è disponibile.

I termini sono stati quindi adattati ai processi, ma poiché vi sono differenze ovvie alcuni aspetti dei termini funzionano in modo diverso. Per un processo a thread singolo, il modo naturale per richiedere che venga fatto qualcosa è effettuare una chiamata sincrona che trasferisce il controllo al sottoprocesso, quindi il controllo viene restituito quando viene eseguito e il processo continua.

Una chiamata asincrona funziona proprio come la comunicazione asincrona nell'aspetto che si invia una richiesta di qualcosa da fare, e il processo di farlo restituisce un segnale quando è fatto. La differenza nell'uso dei termini è che per i processi è nell'elaborazione asincrona che i processi vengono eseguiti in parallelo, mentre per la comunicazione è la comunicazione sincrona che viene eseguita in parallelo.

Quindi "computer o macchina elettrica" ​​è davvero un ambito troppo ampio per fare una definizione corretta del termine, in quanto viene utilizzato in modi leggermente diversi per le diverse tecniche.

+2

+1 per il segnale dell'orologio. È in effetti da dove viene il termine. –

+0

+1 Questa è la risposta più utile. Ciò ha chiarito la confusione che ho avuto per molto tempo. Grazie :) – ajay

2

Penso che ci sia un'inclinazione leggermente diversa dalla maggior parte delle risposte qui.

Asincrono significa "non accade allo stesso tempo".

Nel caso specifico di filettatura:

  • sincrono significa "esegue questo codice ora".
  • Asincrono significa "Enqueue questo lavoro su un thread diverso che verrà eseguito in qualche momento imprecisato in futuro"

Questo di solito permette di "fare due cose in una volta" a causa di motivi come:

  • un thread è solo in attesa (ad esempio la ricezione di dati su una porta seriale) quindi è addormentato
  • si dispone di più processori, quindi i due fili può essere contestuale.

Tuttavia, anche con 128 core di processore, il caso è lo stesso: il lavoro verrà eseguito "in qualche momento nel futuro" (se forse il futuro prossimo) piuttosto che "ora".

0

E 'come: infiammabile, infiammabile (che significa la stessa cosa)

Scherzi a parte - è solo una di quelle stranezze della lingua inglese. Non ha davvero senso. Puoi provare a spiegarlo, ma sarebbe altrettanto facile giustificare i significati invertiti.

+1

Che paese! –

Problemi correlati