Esecuzione asincrona vs sincrona, cosa significa veramente? [chiuso]


1187

Qual è la differenza tra esecuzione asincrona e sincrona?


... o esecuzione "sequenziale vs parallela" ... sebbene il vero parallelismo richieda più core, altrimenti è logicamente intercalato.
Samis,

8
Ero solito confondere entrambi i termini, e il modo in cui ho fatto per ricordare la differenza è lanciare la prima "A" in " A JAX" che sta per asincrono, in JavaScript quando si fanno richieste con AJAX in un ciclo che non aspettano a vicenda o bloccare il processo, poiché il browser non vuole influire sull'esperienza dell'utente con un sito Web bloccato, tutte le richieste vengono inviate quasi contemporaneamente senza attendere la risposta della richiesta precedente. Quello è asincrono
Ragioniere م

Risposte:


1748

Quando esegui qualcosa in modo sincrono, attendi che finisca prima di passare a un'altra attività. Quando esegui qualcosa in modo asincrono, puoi passare a un'altra attività prima che finisca.

Detto questo, nel contesto dei computer questo si traduce nell'esecuzione di un processo o attività su un altro "thread". Un thread è una serie di comandi (un blocco di codice) che esiste come unità di lavoro. Il sistema operativo può gestire più thread e assegnare a un thread un pezzo ("slice") di tempo del processore prima di passare a un altro thread per fare un giro per fare un po 'di lavoro. Al suo centro (scusate il gioco di parole), un processore può semplicemente eseguire un comando, non ha il concetto di fare due cose contemporaneamente. Il sistema operativo simula ciò assegnando intervalli di tempo a thread diversi.

Ora, se si introducono più core / processori nel mix, allora le cose POSSONO effettivamente accadere contemporaneamente. Il sistema operativo può allocare il tempo a un thread sul primo processore, quindi allocare lo stesso intervallo di tempo a un altro thread su un processore diverso. Tutto ciò significa consentire al sistema operativo di gestire il completamento dell'attività mentre è possibile proseguire nel codice e fare altre cose.

La programmazione asincrona è un argomento complicato a causa della semantica di come le cose si uniscono quando puoi farle allo stesso tempo. Ci sono numerosi articoli e libri sull'argomento; dare un'occhiata!


246
Ciò che mi confonde assolutamente è che sincrono significa "allo stesso tempo", ma quando usato nel senso sopra, significa sequenziale e asincrono significa "non allo stesso tempo" ... ?? Qualcuno può spiegare questo conflitto?
Damien Roche,

45
@Zenph: in questo contesto, ci interessa un intero blocco di codice. Sincrono significa che il blocco viene eseguito contemporaneamente (anche se sì, i componenti vengono eseguiti in sequenza). Asincrono significa che il blocco non viene eseguito contemporaneamente.
Adam Robinson,

8
L'esecuzione asincrona si verifica anche quando un programma invia un messaggio a una coda (come nei sistemi di messaggistica, come ActiveMQ, WebSphere MQ, HornetQ, MSMQ, ecc.). In questo caso, la chiamata asincrona non implica la programmazione multithread o la gestione della concorrenza a livello di sistema operativo.
Paulo Merson,

287
Stranamente "Sincrono" significa "usare lo stesso clock", quindi quando due istruzioni sono sincrone usano lo stesso clock e devono accadere una dopo l'altra. "Asincrono" significa "non usare lo stesso orologio", quindi le istruzioni non riguardano il fatto di essere al passo l'una con l'altra. Ecco perché guarda indietro, il termine non si riferisce alla relazione istruzioni tra loro. Si riferisce a ciascuna relazione di istruzioni con l'orologio. Spero che aiuti.
Tom Padilla,

14
I termini provengono dall'ingegneria. it.wikipedia.org/wiki/Asynchronous_system
Tom Padilla

1152

Sincrono / Asincrono NON È NIENTE DA FARE CON IL MULTI-FILETTO.

Sincrono o Sincronizzato significa "connesso" o "dipendente" in qualche modo. In altre parole, due attività sincrone devono essere consapevoli l'una dell'altra e un'attività deve essere eseguita in un modo che dipende dall'altra, come attendere l'avvio fino al completamento dell'altra attività.
Asincrono significa che sono totalmente indipendenti e nessuno dei due deve considerare l'altro in alcun modo, né nell'iniziazione né nell'esecuzione.

Sincrono (un thread):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

Sincrono (multi-thread):

thread A -> |<---A---->|   
                        \  
thread B ------------>   ->|<----B---------->|   
                                              \   
thread C ---------------------------------->   ->|<------C----->| 

Asincrono (un thread):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

Asincrono (multi-thread):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • Punto iniziale e finale delle attività A, B, C rappresentate da <, >caratteri.
  • Fasce orarie della CPU rappresentate da barre verticali |

Tecnicamente, il concetto di sincrono / asincrono non ha nulla a che fare con i thread . Sebbene, in generale, sia insolito trovare attività asincrone in esecuzione sullo stesso thread, è possibile (vedere sotto per esempi) ed è comune trovare due o più attività in esecuzione in modo sincrono su thread separati ... No, il concetto of synchronous / asynchronous ha a che fare esclusivamente con la possibilità di avviare o meno una seconda o successiva attività prima che l'altra (prima) attività sia stata completata o se deve attendere. Questo è tutto. Quale thread (o thread), processi o CPU o, in effetti, su quale hardware, le attività vengono eseguite non è rilevante. In effetti, per chiarire questo punto, ho modificato la grafica per mostrarlo.


ESEMPIO ASINCRONO:

Nel risolvere molti problemi di ingegneria, il software è progettato per suddividere il problema generale in più attività individuali e quindi eseguirle in modo asincrono. L'inversione di una matrice o un problema di analisi di elementi finiti sono buoni esempi. Nell'informatica, l'ordinamento di un elenco è un esempio. La routine quicksort, ad esempio, divide l'elenco in due elenchi ed esegue un quicksort su ciascuno di essi, chiamando se stesso (quicksort) in modo ricorsivo. In entrambi gli esempi precedenti, le due attività possono (e spesso sono state) eseguite in modo asincrono. Non devono essere su thread separati. Anche una macchina con una CPU e un solo thread di esecuzione può essere codificata per avviare l'elaborazione di una seconda attività prima che la prima sia stata completata. L'unico criterio è quello i risultati di un'attività non sono necessari come input per l'altra attività. Finché le ore di inizio e fine delle attività si sovrappongono, (possibile solo se l'output di nessuna delle due è necessario come input per l'altra), vengono eseguite in modo asincrono, indipendentemente dal numero di thread in uso.

ESEMPIO SINCRONO:

Qualsiasi processo costituito da più attività in cui le attività devono essere eseguite in sequenza, ma una deve essere eseguita su un'altra macchina (recuperare e / o aggiornare i dati, ottenere una quotazione di borsa dal servizio finanziario, ecc.). Se si trova su una macchina separata, si trova su un thread separato, sia sincrono che asincrono.


92
perché nel mondo le parole significano cose diverse nel computer ... lasciami sempre tornare a questo ... dal dizionario ... sincrono: che si verificano allo stesso tempo. asincrono: non si verifica allo stesso tempo.
Muhammad Umer,

17
ma come puoi vedere nei computer significa il contrario
Muhammad Umer l'

5
Forse la nomenclatura si basa sul fatto che l'avvio dei compiti sia "sincronizzato" con il completamento di altri compiti?
Charles Bretana,

11
@MuhammadUmer: nel mondo dei computer, il verificarsi contemporaneamente è chiamato concorrenza.
Roy Ling,

5
IMHO, queste immagini non descrivono tutte l'esecuzione sincrona o asincrona delle attività Ad esempio, la seconda immagine implica che le attività asincrone richiedono diversi thread. In realtà no. E che le attività devono essere eseguite in parallelo, il che non è un requisito. Oppure, l'immagine per "sincrono" mostra molto bene come le attività sono state inviate in modo asincrono da un sito di chiamata e ora vengono eseguite in un programmatore di attività seriale;) IMO, le immagini sono fuorvianti.
CouchDeveloper,

642

In termini più semplici:

SINCRONO

Sei in coda per ottenere un biglietto per il cinema. Non puoi ottenerne uno finché tutti di fronte a te non ne ottengono uno, e lo stesso vale per le persone in coda dietro di te.

ASYNCHRONOUS

Sei in un ristorante con molte altre persone. Ordina il tuo cibo. Altre persone possono anche ordinare il loro cibo, non devono aspettare che il tuo cibo sia cucinato e servito a te prima di poter ordinare. In cucina i lavoratori del ristorante cucinano, servono e prendono continuamente ordini. Le persone riceveranno il loro cibo non appena sarà cotto.


10
Se qualcuno vuole delle mele rispetto alle mele; se vuoi che lo scenario del ristorante sia sincrono, quando ordini il cibo, tutti gli altri nel ristorante dovrebbero aspettare che arrivi il tuo cibo prima di poter ordinare il loro cibo ecc. Ora questo sembra uno scenario davvero stupido, ma nel mondo dell'informatica questo scenario potrebbe essere utile. Supponiamo che ogni cliente non possa decidere ciò che desidera, e invece desidera guardare ciò che il cliente precedente ordina se lo desidera o meno, quindi ha senso che debbano attendere che arrivi il cibo prima di ordinare.
Fonix,

Solo per aggiungere ... potrebbe essere che le operazioni vengano eseguite come in una coda in operazioni asincrone ... Ma questo non è affatto obbligatorio.
Sreekanth Karumanaghat,

5
esempio di vita molto semplice e reale
Manish,

Per spingere ulteriormente il tuo esempio, potrebbero prendere in considerazione diverse porte per la vendita dei biglietti. Pertanto, ogni linea può funzionare in modo asincrono dall'altra linea ma in modo sincrono all'interno di se stessa!
Saeed Ahadian,

334

Spiegazione semplice tramite analogia

Esecuzione sincrona

Il mio capo è un uomo impegnato. Mi dice di scrivere il codice. Gli dico: bene. Comincio e mi sta guardando come un avvoltoio, in piedi dietro di me, fuori dalla mia spalla. Sono tipo "Amico, WTF: perché non vai a fare qualcosa mentre finisco questo?"

è tipo: "No, aspetto proprio qui fino a quando non avrai finito." Questo è sincrono.

Esecuzione asincrona

Il capo mi dice di farlo, e invece di aspettare proprio lì per il mio lavoro, il capo si spegne e svolge altri compiti. Quando finisco il mio lavoro, riferisco semplicemente al mio capo e dico: "HO FATTO!" Questa è l'esecuzione asincrona.

(Segui il mio consiglio: MAI lavorare con il capo dietro di te.)


29
Sono FATTO ... è ancora più divertente quando lo prendi come rassegnazione.
Daedric,

91

L'esecuzione sincrona significa che l'esecuzione avviene in una singola serie. A->B->C->D. Se stai chiamando quelle routine, Averrà eseguito, quindi terminato, quindi Binizierà, quindi terminerà, quindi Cinizierà, ecc.

Con l' esecuzione asincrona , inizi una routine e la lasci correre in background mentre inizi la prossima, quindi a un certo punto dì "aspetta che finisca". È più simile a:

Inizio A->B->C->D->Attendere per Aalla fine

Il vantaggio è che puoi eseguire B, Ce o Dmentre Aè ancora in esecuzione (in background, su un thread separato), quindi puoi sfruttare meglio le tue risorse e avere meno "blocchi" o "attese".


@ Reed Copsey ...... Grazie per una buona spiegazione ..... Volevo solo qualche informazione in più su Async-Exec ...... In base alla tua risposta in Async Exec .... Inizia A-> B-> C-> D-> Aspetta che A finisca ... Quindi tutti A, B, C, D iniziano alla volta ...... e aspettano che A finisca ..... B finirà solo dopo A, e C dopo B e così via ......? Oppure B può finire prima e poi A può finire?
Devrath,

8
@Devrath Le operazioni possono terminare in qualsiasi ordine.
Reed Copsey,

59

In breve, la sincronizzazione si riferisce a due o più punti iniziale e finale dei processi , NON alle loro esecuzioni . In questo esempio, l'endpoint del processo A è sincronizzato con il punto iniziale del processo B:

SINCRONO
   | -------- -------- A |
                     | -------- -------- B |

I processi asincroni, d'altra parte, non hanno sincronizzato il loro inizio e gli endpoint:

ASYNCHRONOUS
   | -------- -------- A |
         | -------- -------- B |

Laddove il Processo A si sovrappone al Processo B, sono in esecuzione contemporaneamente o in modo sincrono (definizione del dizionario), da cui la confusione.

AGGIORNAMENTO: Charles Bretana ha migliorato la sua risposta , quindi questa risposta ora è solo un semplice mnemonico (potenzialmente semplificato).


2
copia della risposta di Charles Bretana
Dinesh Saini,

2
@DineshSaini - Il mio diagramma è leggermente diverso. Per chiarezza, ho posizionato A sopra B in entrambi i casi, sottolineando se i loro punti iniziale e finale sono sincronizzati. Il diagramma di Charles Bretana mette in sequenza i processi sincroni senza "sincronizzare" nulla. (Stavo per commentare sotto la sua risposta per "migliorarlo", ma ho capito che sarebbe stato più semplice mostrare il nuovo diagramma.)
entr0p3te

Grandi diagrammi. Penso che il modo per chiamare il primo SYNC sia che l'inizio e la fine di A nel diagramma in alto siano effettivamente nello stesso momento, nel senso che nessun altro evento è intervenuto o potrebbe aver interferito con il completamento di A. La sincronizzazione può fare riferimento a una singola attività in modo isolato, come l'aggiunta ai registri della CPU, il cui inizio e fine sono così vicini, da essere effettivamente sincroni di dizionario.
Dean Radcliffe,

55

Sincrono significa che il chiamante attende la risposta o il completamento, asincrono che il chiamante continua e una risposta arriva più tardi (se applicabile).

Come esempio:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

Questo uscirà sempre:

Before call
In call
After call

Ma se dovessimo fare qualcosa di asincrono (più modi per farlo), l'output potrebbe diventare:

Before call
After call
In call

Perché il metodo che effettua la chiamata asincrona continuerebbe immediatamente con la riga di codice successiva. Dico "potrebbe", perché l'ordine di esecuzione non può essere garantito con operazioni asincrone. Potrebbe anche essere eseguito come originale, a seconda dei tempi dei thread, ecc.


34

Penso che questa sia una spiegazione un po 'rotonda ma chiarisce ancora usando l'esempio della vita reale.

Piccolo esempio:

Diciamo che la riproduzione di un audio comporta tre passaggi:

  1. Ottenere il brano compresso dal disco rigido
  2. Decomprimi l'audio.
  3. Riproduci l'audio non compresso.

Se il tuo lettore audio fa il passo 1,2,3 in sequenza per ogni brano, allora è sincrono. Dovrai aspettare un po 'di tempo per ascoltare la canzone fino a quando la canzone non viene effettivamente recuperata e decompressa.

Se il tuo lettore audio fa i passi 1,2,3 l'uno indipendentemente dall'altro, allora è asincrono. vale a dire. Durante la riproduzione dell'audio 1 (passaggio 3), se recupera l'audio 3 dall'hard disk in parallelo (passaggio 1) e decomprime l'audio 2 in parallelo. (passaggio 2) Finirai per ascoltare la canzone senza aspettare molto per il recupero e la decompressione.


32

Le operazioni di sincronizzazione e asincrono riguardano l'ordine di esecuzione di una nuova attività in relazione all'attività corrente. Due attività su una tabella: attività corrente e una nuova attività

Sincrono (blocco): implica che le attività verranno eseguite una alla volta. Un'attività successiva viene avviata solo al termine dell'attività precedente. Task 2non viene avviato fino al Task 1termine

Asincrono (non bloccante): implica che l'attività restituisca immediatamente il controllo con la promessa di eseguire un codice e di notificare il risultato in un secondo momento (ad es. Callback, funzione). Task 2viene eseguito anche se Task 1non è terminato

Quindi risposta su sincronizzazione e asincronizzazione: in iOS , in Android


Il diagramma nell'esempio multi-thread sincrono sembra rappresentare thread in esecuzione contemporaneamente?
Samis,

@ sαmosΛris puoi considerare Thread come l'asse X che indica la cronologia
yoAlex5

L'asse x è convenzionalmente usato come dimensione spaziale; l'asse t per il tempo - un'importante distinzione trovata nell'analisi della complessità dell'algoritmo.
Samis,

23

Detto semplicemente che l'esecuzione asincrona sta facendo cose in background.

Ad esempio, se si desidera scaricare un file da Internet, è possibile utilizzare una funzione sincrona per farlo, ma bloccherà il thread fino al termine del download del file. Ciò può rendere la tua applicazione non rispondente a qualsiasi input dell'utente.

Invece è possibile scaricare il file in background utilizzando il metodo asincrono. In questo caso la funzione di download ritorna immediatamente e l'esecuzione del programma continua normalmente. Tutte le operazioni di download vengono eseguite in background e il programma verrà notificato al termine.


1
come sarà il tuo esempio più veloce. Alla fine non è possibile riprodurre il file fino al termine del periodo di download. Puoi spiegare? Immagino di non capire l'asincio allora e probabilmente sono io ma cosa farebbe quell'altro passaggio o processo mentre l'altro processo è in esecuzione (ottenere il download)? Voglio dire cosa puoi fare fino a quando non ricevi di nuovo quel processo asincrono (download) nella tua app ... Non capisco. Quindi, dovresti ancora mostrare all'utente una sorta di meccanismo di attesa, non importa cosa in entrambe le situazioni?
Positivo

4
Non deve essere più veloce. Si tratta di non bloccare il thread principale, in modo che possa elaborare altri tipi di input dell'utente. Ad esempio, l'utente potrebbe voler annullare il download o iniziare a scaricare un altro file contemporaneamente.
Michał Piaskowski il

19

Come esempio molto semplice,

SINCRONO

Immagina 3 studenti delle scuole incaricati di correre una staffetta su una strada.

Il 1 ° studente percorre la sua data distanza, si ferma e passa il testimone al 2 °. Nessun altro ha iniziato a correre.

1------>
        2.
                3.

Quando il 2 ° studente recupera il testimone, inizia a correre per la sua data distanza.

      1.
        2------>
                3.

La seconda studentessa si è sciolta i lacci delle scarpe. Ora si è fermata e si è riallacciata. Per questo motivo, l'ora di fine della seconda è stata estesa e l'ora di inizio della terza è stata ritardata.

      1.
        --2.--->
                3.

Questo schema continua fino a quando il 3 recupera il testimone dal 2 ° e termina la gara.

ASYNCHRONOUS

Immagina 10 persone a caso che camminano sulla stessa strada. Ovviamente non sono in coda, ma camminano casualmente su diversi punti della strada a ritmi diversi.

Il laccio della seconda persona si è slegato. Si fermò per legarlo di nuovo.

Ma nessuno sta aspettando che lei lo leghi. Tutti gli altri stanno ancora camminando come prima, con lo stesso ritmo.

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->

18

Ho creato un GIF per spiegarlo, spero di esserti stato utile: guarda, la linea 3 è asincrona e altre sono sincrone. tutte le righe prima della riga 3 dovrebbero attendere fino a quando la riga termina il suo lavoro, ma a causa della riga 3 è asincrona, la riga successiva (riga 4), non attendere la riga 3, ma la riga 5 dovrebbe attendere che la riga 4 finisca il suo lavoro, e la linea 6 dovrebbe attendere la linea 5 e 7 per 6, poiché la linea 4,5,6,7 non è asincrona. la linea 3 è asincrona e le altre sono sincrone


12

Quando eseguiamo una sequenza come: a> b> c> d>, se otteniamo un errore nel mezzo dell'esecuzione come:

a
b
c
fail

Quindi ricominciamo dall'inizio:

a
b
c
d

questo è sincrono

Se, tuttavia, abbiamo la stessa sequenza da eseguire: a> b> c> d>, e abbiamo un errore nel mezzo:

a
b
c
fail

... ma invece di riavviare dall'inizio, ricominciamo dal punto di errore:

c
d

... questo è noto come asincrono.


1
potresti per favore essere più preciso in ciò che intendi fornendo più contesto ai tuoi esempi
krichard

5
Questa risposta non è semplicemente corretta.
Marchese di Lorne,

7

Stai confondendo Synchronous con Parallel vs Series. Sincrono significa tutto allo stesso tempo. Sincronizzato significa correlato a ciascuno degli altri che può significare in serie o ad un intervallo fisso. Mentre il programma sta facendo tutto, funziona in serie. Prendi un dizionario ... ecco perché abbiamo un tè non dolce. Hai tè o tè zuccherato.


3
In realtà, "sincronizzato" si riferisce alla relazione tra le istruzioni e l'orologio. NON la relazione tra le istruzioni stesse. Ecco perché sembra "sincrono" all'indietro in realtà significa uno dopo l'altro: ma le istruzioni sono sincronizzate all'orologio. "Asincrono" significa "in qualsiasi momento, non mi interessa quando succede": le istruzioni non devono essere sincronizzate con l'orologio. Sì, esiste una definizione del dizionario, ma è necessario assicurarsi di definire la situazione corretta.
Tom Padilla,

1
Sincrono non significa "tutti allo stesso tempo" nell'informatica. Stai confondendo la sincronizzazione con sincrona e "parallela contro serie" con tè e tè dolce. La risposta non ha alcun senso.
Marchese di Lorne,

7

Sincrono significa sostanzialmente che puoi eseguire solo una cosa alla volta. Asincrono significa che puoi eseguire più cose alla volta e non devi finire di eseguire la cosa corrente per passare alla successiva.


Non vengono eseguite più cose contemporaneamente chiamate Multithreading anziché asincrone.
Sreekanth Karumanaghat,

7

Usa un esempio di istruzioni per preparare la colazione

  1. Versa una tazza di caffè.
  2. Riscalda una padella, quindi friggi due uova.
  3. Friggere tre fette di pancetta.
  4. Tostare due pezzi di pane.
  5. Aggiungi burro e marmellata al pane tostato.
  6. Versare un bicchiere di succo d'arancia.

Se hai esperienza di cucina, eseguiresti queste istruzioni in modo asincrono. inizieresti a scaldare la padella per le uova, poi inizieresti la pancetta. Metteresti il ​​pane nel tostapane, quindi avvieresti le uova. Ad ogni fase del processo, avvii un'attività, quindi rivolgi la tua attenzione alle attività che sono pronte per la tua attenzione.

Cucinare la colazione è un buon esempio di asincrono lavoro che non è parallelo. Una persona (o thread) può gestire tutte queste attività. Continuando l'analogia della colazione, una persona può fare colazione in modo asincrono avviando l'attività successiva prima che la prima venga completata. La cottura procede indipendentemente dal fatto che qualcuno lo stia guardando. Non appena inizi a scaldare la padella per le uova, puoi iniziare a friggere la pancetta. Una volta che la pancetta inizia, puoi mettere il pane nel tostapane.

Per un algoritmo parallelo, avresti bisogno di più cook (o thread). Uno farebbe le uova, uno la pancetta e così via. Ognuno sarebbe concentrato solo su quell'unico compito. Ogni cuoco (o thread) verrebbe bloccato in modo sincrono in attesa che la pancetta fosse pronta a girare, o che scoppiasse il brindisi.

Riferimento da concetti di programmazione asincrona


4

Un'operazione sincrona fa il suo lavoro prima di tornare al chiamante.

Un'operazione asincrona fa (quasi tutto) il suo lavoro dopo essere tornata al chiamante.


il collegamento è morto.
Speriamo utile

1

Per quanto riguarda il " allo stesso tempo definizione " dell'esecuzione sincrona (che talvolta confonde), ecco un buon modo per capirla:

Esecuzione sincrona : tutte le attività all'interno di un blocco di codice vengono eseguite tutte contemporaneamente.

Esecuzione asincrona : tutte le attività all'interno di un blocco di codice non vengono eseguite tutte contemporaneamente.


Sarei più d'accordo con questo se dicessi "efficacemente allo stesso tempo" o "per scopi pratici". Penso che il downvote sia stato per l'affermazione inesatta che le cose vengono effettivamente fatte nello stesso periodo.
Dean Radcliffe,

1

Penso che un buon modo di pensarci sia una classica staffetta da corsa

Sincrono : processi come membri della stessa squadra, non verranno eseguiti fino a quando non riceveranno il testimone (fine dell'esecuzione del processo / corridore precedente) e tuttavia agiranno tutti in sincronia tra loro.

Asincrono : dove processi come membri di team diversi sulla stessa pista di staffetta, correranno e si fermeranno, si sincronizzeranno tra loro, ma all'interno della stessa gara (esecuzione complessiva del programma).

Ha senso?


1

Una diversa definizione inglese di Synchronize è qui

Coordinata; combinano.

Penso che sia una definizione migliore di "Happening allo stesso tempo". Anche questa è una definizione, ma non penso che sia quella che si adatta al modo in cui viene utilizzata in Informatica.

Quindi un'attività asincrona non è coordinata con altre attività, mentre un'attività sincrona È coordinata con altre attività, quindi una finisce prima che ne inizi un'altra.

Come si ottiene ciò è una domanda diversa.


0

Sincrono significa che verrà eseguita l'esecuzione in modalità coda per attività. Supponiamo che sia condiviso solo un veicolo che deve essere condiviso tra amici per raggiungere la destinazione uno per uno.
In caso asincrono, ogni amico può ottenere un veicolo noleggiato e raggiungere la sua destinazione.


0

Sì, sincrono significa allo stesso tempo, letteralmente, significa lavorare tutti insieme. più umani / oggetti nel mondo possono fare più cose allo stesso tempo ma se guardiamo al computer, dice che sincrono significa dove i processi lavorano insieme che significa che i processi dipendono dal ritorno reciproco ed è per questo che vengono eseguiti uno dopo l'altro in sequenza corretta. Mentre asincrono significa che i processi non funzionano insieme, possono funzionare contemporaneamente (se sono su multithread), ma funzionano in modo indipendente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.