..


Link-uri sponsorizate

Programarea concurentă în POSIX C

Articol scris de Mark Frison
Pagina 1 din 5

Toate sistemele de operare moderne lua ani pentru a fi un model de multi-procesului de management, repartizarea timpului de execuţie şi de spaţiu de memorie pentru diferitele programe care rulează simultan. În ultimii ani, în mare parte datorită omniprezenţa de comunicaţie în reţea, acest concept a fost extins pentru software-ul individuale, împărţind fluxuri de acelaşi proces multiple de control al acestor fire. Această nouă abordare aduce schimbări enorme la structura de software, atât în ​​teorie cât şi în practică, aşa cum se întâmplă întotdeauna, modularitatea şi expresivitate sunt plătite în termeni de complexitate software-ului a crescut.

Limbaje de programare cele mai recente, de la Java, toate API-uri oferă nativ pentru crearea şi gestionarea fire; sisteme bazate pe masini virtuale, cum ar fi Java şi C # au dezvoltator un nivel de abstractizare coerente privind această problemă şi toate celelalte trebuie să se bazeze pe primitivele sistemului de operare, care suportă de multe ori probleme de portabilitate a codului. În acest context, bibliotecile sunt o parte din POSIX fire (Pthreads) pentru a permite dezvoltatorilor C, de asemenea, o garanţie minimă a portabilităţii între diferite sisteme.

Cerinţe preliminare

Acest articol este destinat celor care doresc să se apropie de subiect de programare concurente în limbaj de nivel scăzut. În această prezentare presupune că cititorul a dobândit deja cunoştinţe de bază din limbajul C nu vor fi tratate ca subiecte de bază, cum ar fi, de exemplu managementul memoriei, si tipurile de date.

Biblioteci POSIX fir

La fel de uşor de ghicit numele, bibliotecile POSIX firul fac parte din setul de POSIX (Portable System Interface de operare [pentru Unix]). Citând definiţia "pthread [...] specifică un set de interfeţe (funcţii, fişiere antet) pentru procesul de programare filetate la [...] unică poate conţine mai multe fire, care sunt toate de executare a programului de examinare [...] partajează memoria Same la nivel mondial (segmente de date şi heap), dar STI Fiecare fir are stivă propriu. " Acest fragment descrie exact ceea ce este implicat în mai multe fire de programare într-un POSIX:

  • fluxurile multiple de control (fire), intr-un singur proces;
  • schimbul de memorie care conţin codul de (datele de segment) şi memorie dinamică (heap segment);
  • privat stivă.
Ce nu face clar este starea de înregistrări, în special cele cum ar fi indicatorul de instrucţiuni de bază "şi indicatorul stiva, asa ca am preciza că toate înregistrările sunt strict privat la fiecare fir şi salvat / restaurat în cazul în care fluxul de control sa deplasat de la între fire (filet de comutare).

Utilizaţi standardul POSIX oferă un nivel ridicat de integrare între toate sistemele POSIX-conforme cu, cum ar fi, de exemplu, GNU / Linux, Mac OSX, BSD şi chiar Windows (cu unele adaugiri). Pe parcursul acestui articol ne vom referi la utilizarea de CCG în conformitate cu GNU / Linux, desigur, toate consideraţiile sunt reportate la orice alte POSIX-cum ar fi mediu.

O primă (incorect) de exemplu

Biblioteca pthread.h oferă tot ce aveţi nevoie pentru programarea într-un multi-fire, mai degrabă decât a face o lista simpla de primitive furnizate, vom prezenta un exemplu practic din când în când prin discutarea diferenţele lor.

Deci, ia în considerare următoarea problemă: programul trebuie să citească de la transfer bancar mai multe fisiere de îmbarcare şi / sau de depozit care urmează să fie efectuate la un cont, atunci aceste fişiere nu va avea următoarea formă:






 120







 -550







 896







 5541







 -85







 ...



Pentru a accelera diferite fire "casier", fiecare operează pe un singur fişier, iar contul clientului actualizate în acelaşi timp, am efectuat toate operaţiunile, în starea de ieşire a contului.

În aceeaşi categorie ...
E-Learning
Paint Shop Pro (întâi) Paint Shop Pro (întâi)
Grafica web si editare foto cu Corel PSP cunoscute. De la 49 €.
Photoshop (Curs) Photoshop (Curs)
Grafica web si editare foto populară cu Adobe Photoshop. De la 49 €.
PHP (Curs) PHP (Curs)
Ciclu complet pentru crearea de site-uri Web dinamice. De la 49 €.
Link-uri sponsorizate