Hopp til innhold
NorscodeNorscode

Flere ting samtidig, uten flokene

ArtikkelAv Norscode-prosjektet

En planlegger og tråder i standardbiblioteket gjør samtidighet enkel nok for ekte tjenester.

Flere ting samtidig planlegger starter arbeid oppgave 1oppgave 2oppgave 3

Moderne programmer gjør sjelden bare én ting av gangen. En webtjeneste svarer på mange forespørsler samtidig; et verktøy kan laste ned flere filer på én gang. Å håndtere flere ting samtidig — samtidighet — er noe et språk må ta på alvor.

Flere oppgaver, én ryddig modell

Norscode har en planlegger og støtte for tråder i standardbiblioteket, slik at du kan sette i gang flere oppgaver og la dem løpe ved siden av hverandre. Poenget er å gjøre det vanlige tilfellet enkelt: starte arbeid som kan skje uavhengig, og samle resultatene når de er klare, uten at koden blir en floke.

Hvorfor det henger sammen med trygghet

Samtidighet er beryktet for feil som bare dukker opp av og til — to oppgaver som roter i det samme på likt. At kjøretiden har en tydelig modell for hvordan oppgaver kjøres og rydder opp etter seg, gjør slike feil mindre sannsynlige enn i en verden der alt deler alt fritt.

Nok for tjenester, ikke et forskningsprosjekt

Målet er ikke å være det mest avanserte samtidighetssystemet som finnes, men å dekke det ekte tjenester trenger: håndtere mange forespørsler, gjøre flere kall samtidig, og holde arbeidet oversiktlig. For det store flertallet av programmer er det akkurat det som trengs.

Samtidighet gjort enkelt er ikke samtidighet gjort svakt. Det er å fjerne det som gjør det vanskelig, så du sitter igjen med det som gjør det nyttig.

Hvorfor det er vanskelig — og hvordan det gjøres enklere

Det klassiske problemet med samtidighet er at to oppgaver roter i det samme på likt: den ene leser en verdi mens den andre endrer den, og resultatet blir tilfeldig. Slike feil er beryktet fordi de bare dukker opp av og til, og forsvinner når du prøver å finne dem. En tydelig modell for hvordan oppgaver startes og ryddes opp etter, gjør denne typen feil mindre sannsynlig enn i en verden der alt deler alt fritt.

Det vanlige tilfellet, gjort lett

Målet med samtidigheten i Norscode er å gjøre det vanlige enkelt: sette i gang arbeid som kan skje uavhengig, og hente resultatene når de er klare. En webtjeneste som svarer på mange forespørsler samtidig, eller et verktøy som gjør flere kall på én gang, er akkurat den typen oppgave det er laget for. Du slipper å bygge alt fra bunnen med lavnivå-primitiver.

Nok, ikke mest mulig

Norscode prøver ikke å være det mest avanserte samtidighetssystemet som finnes. Det dekker det ekte tjenester trenger, og holder koden oversiktlig underveis. For det store flertallet av programmer er det nettopp det som trengs — samtidighet gjort enkelt er ikke samtidighet gjort svakt, men å fjerne det som gjør det unødvendig vanskelig.

Les også

Tilbake til oversikten