Asynkron vs synkron kjøring, hva betyr det egentlig?

Hva er forskjellen mellom asynkron og synkron kjøring?

Løsning

Når du utfører noe synkront, venter du til det er ferdig før du går videre til en annen oppgave. Når du utfører noe asynkront, kan du gå videre til en annen oppgave før den er ferdig.

Når det er sagt, i sammenheng med datamaskiner oversettes dette til å utføre en prosess eller oppgave på en annen "tråd". En tråd er en serie kommandoer (en blokk med kode) som eksisterer som en arbeidsenhet. Operativsystemet kan administrere flere tråder og tildele en tråd et stykke (" skive ") prosessortid før du bytter til en annen tråd for å gi den en tur til å gjøre noe arbeid. I kjernen (unnskyld ordspillet) kan en prosessor ganske enkelt utføre en kommando, den har ikke noe konsept om å gjøre to ting samtidig. Operativsystemet simulerer dette ved å tildele tidsskiver til forskjellige tråder.

Nå, hvis du introduserer flere kjerner / prosessorer i blandingen, kan ting faktisk skje samtidig. Operativsystemet kan tildele tid til en tråd på den første prosessoren, og deretter tildele den samme tidsblokken til en annen tråd på en annen prosessor. Alt dette handler om å la operativsystemet administrere fullføringen av oppgaven din mens du kan fortsette i koden din og gjøre andre ting.

Asynkron programmering er et komplisert tema på grunn av semantikken om hvordan ting henger sammen når du kan gjøre dem samtidig. Det finnes mange artikler og bøker om emnet; ta en titt!

Kommentarer (18)

Synkron kjøring betyr at kjøringen skjer i en enkelt serie. A->B->C->D. Hvis du kaller disse rutinene, vil A kjøres, deretter avsluttes, deretter B startes, deretter avsluttes, deretter C startes osv.

Med Asynkron kjøring starter du en rutine, og lar den kjøre i bakgrunnen mens du starter den neste, og på et tidspunkt sier du "vent til denne er ferdig". Det er mer som:

Start A->B->C->D->Vent til A er ferdig.

Fordelen er at du kan utføre B, C og eller D mens A fortsatt kjører (i bakgrunnen, på en egen tråd), slik at du kan utnytte ressursene dine bedre og ha færre "henger" eller "venter".

Kommentarer (2)

Enkelt sagt er asynkron kjøring å gjøre ting i bakgrunnen.

Hvis du for eksempel vil laste ned en fil fra Internett, kan du bruke en synkron funksjon for å gjøre det, men det vil blokkere tråden din til filen er ferdig nedlastet. Dette kan gjøre at applikasjonen din ikke reagerer på brukerinndata.

I stedet kan du laste ned filen i bakgrunnen ved hjelp av en asynkron metode. I dette tilfellet returnerer nedlastingsfunksjonen umiddelbart, og programkjøringen fortsetter som normalt. Alle nedlastingsoperasjonene utføres i bakgrunnen, og programmet ditt blir varslet når det er ferdig.

Kommentarer (2)