..


Sponsede Lenker

Samtidig programmering i POSIX C

Artikkel skrevet av Mark Frison
Side 1 av 5

Alle moderne operativsystemer ta år å bli en modell av multi-process management, tildele kjøretid og minne plass til ulike programmer kjører samtidig. I de senere årene, hovedsakelig på grunn av Gjennomtrengningskraft nettverkskommunikasjon, har dette konseptet blitt utvidet til den enkelte programvaren, dele den samme prosessen flere strømmer av kontroll de tråder. Denne nye tilnærmingen bringer enorme endringer i strukturen av programvare, både i teori og praksis, som alltid skjer, modularitet og ekspressivitet er betalt i form av økt programvare kompleksitet.

Den programmeringsspråk siste, fra Java, alle tilbyr innfødte APIer for å lage og administrere emner; systemer basert på virtuelle maskiner som Java og C # har utvikleren et nivå av abstraksjon konsekvent i denne saken og alle andre må stole på primitive av operativsystemet, ofte pådra seg problemer av portabilitet av kode. I denne sammenheng bibliotekene er en del av POSIX tråder (Pthreads) for å tillate C utviklere også en minimum garanti for mobilitet mellom ulike systemer.

Forutsetninger

Denne artikkelen er rettet mot alle som ønsker å nærme seg temaet samtidige programmering på lavt nivå språk. I denne presentasjonen forutsetter at leseren allerede har skaffet seg en grunnleggende kjennskap til C-språk vil ikke bli behandlet som grunnleggende emner som for eksempel, minnehåndtering og datatyper.

POSIX tråd bibliotekene

Like lett gjettet fra navnet, POSIX tråd bibliotekene er en del av settet med POSIX (Portable Operating System Interface [for Unix]). Siterer definisjonen "pthread [...] spesifiserer et sett av grensesnitt (funksjoner, header-filer) for gjenger programmering prosessen til single [...] kan inneholde flere tråder, som alle utfører undersøkelsen program [...] samme andel globale minne (data og haug segmenter), men dens Hver tråd har egen stack. " Dette utdraget beskriver nøyaktig hva som er involvert i multi-programmering i et POSIX-tråder:

  • multiple kontroll strømmer (tråder) i en enkelt prosess;
  • deling av minne som inneholder koden (data segment) og dynamisk minne (haug segment);
  • private stabelen.
Hva gjør ikke klart er status på poster, spesielt de som grunnleggende "instruksjon pekeren og stack pekeren, så vi spesifisere at alle poster er strengt personlig til hver tråd og lagres / gjenopprettes når flyten av kontroll har flyttet fra mellom tråder (thread switching).

Bruk POSIX standarden gir en høy grad av integrasjon på tvers av alle POSIX-kompatible systemer som for eksempel GNU / Linux, Mac OSX, BSD og til og med Windows (med noen tillegg). Gjennom denne artikkelen vil vi referere til bruken av GCC under GNU / Linux, selvfølgelig, er alle hensyn videreføres til andre POSIX-lignende miljø.

Et første (feil) eksempel

Den pthread.h Biblioteket inneholder alt du trenger for programmering i et multi-tråder, snarere enn å gjøre bare en liste over de primitive oppgitt, vil vi presentere et praktisk eksempel fra tid til annen ved å diskutere deres forskjeller.

Så vurdere følgende problem: programmet må lese fra bankoverføring flere filer av plukking og / eller innskudd for å bli gjort til en konto, så disse filene vil ha følgende form:






 120







 -550







 896







 5541







 -85







 ...



Å øke hastigheten på forskjellige tråder "cashier" hver operere på en enkelt fil og oppdatert samtidig kundens konto, utførte vi alle operasjoner i produksjonen status av kontoen.

I samme kategori ...
E-læring
ASP (Advanced) ASP (Advanced)
Full kurs for å lage dynamiske nettsider. Fra € 39.
Brenne CDer og DVDer (Ebook) Brenne CDer og DVDer (Ebook)
Guide til å brenne CDer og DVDer med freeware programmer. Bare 25 €.
OpenOffice (Ebook) OpenOffice (Ebook)
The open-source programvare for å administrere kontorarbeid. Bare 25 €.
Sponsede Lenker