..


Enllaços patrocinats

Programació concurrent en POSIX C

L'article escrit per Mark Frison
Pàgina 1 de 5

Tots els sistemes operatius moderns triguen anys a ser un model per al maneig de multi-procés, l'assignació de temps d'execució i espai de memòria per als diversos programes que s'executen simultàniament. En els últims temps, en gran part a causa de l'omnipresència de la comunicació de xarxa, aquest concepte s'ha ampliat al programari individual, dividint els fluxos del procés mateix múltiple de seguiment d'aquests temes. Aquest nou enfocament porta enormes canvis en l'estructura de programari, tant en teoria com en la pràctica, com sempre passa, la modularitat i l'expressivitat són pagats en termes d'augment de la complexitat del programari.

Els llenguatges de programació més recent de Java, totes les API natives ofereixen per crear i administrar les discussions, els sistemes basats en màquines virtuals, com ara Java i C # que el desenvolupador d'un nivell d'abstracció coherent a això i tots els altres ha de confiar en les primitives del sistema operatiu, moltes vegades incorrent en problemes de portabilitat del codi. En aquest context, les biblioteques són part de POSIX fils (threads) que permeten als desenvolupadors de C també una garantia mínima de portabilitat entre diferents sistemes.

Requisits previs

Aquest article està destinat a tots aquells que vulguin apropar-se a la qüestió dels llenguatges de programació concurrent en baix nivell. Aquesta presentació assumeix que el lector ja ha adquirit un coneixement bàsic del llenguatge C no seran tractats com temes bàsics com, per exemple, la gestió de memòria i tipus de dades.

Les biblioteques de fils POSIX

Com es pot endevinar fàcilment del seu nom, les biblioteques de fils POSIX són part del conjunt de POSIX (Portable Operating System Interface [per a Unix]). Citant la definició de "pthread [...] especifica un conjunt d'interfícies (funcions, arxius de capçalera) per a la programació de rosca a sol procés pot [...] contenen múltiples subprocessos, els quals són el mateix programa l'execució de [...] La memòria mateixa proporció global (dades i segments de pila), però el seu fil Cadascun té pila pròpia. " Aquest extracte descriu exactament el que està involucrat en la planificació de múltiples subprocessos en un entorn POSIX:

  • múltiples fluxos de control (threads) en un sol procés;
  • l'intercanvi de memòria que conté el codi (segment de dades) i memòria dinàmica (heap segment);
  • pila privat.
El que no té clar és l'estat dels registres, especialment els més fonamentals, com ara "punter de la instrucció i el punter de pila, de manera que s'especifica que tots els registres són estrictament privades a cada fil i es guarda / restaura quan el flux de control s'ha desplaçat de entre els fils (fils de commutació).

Utilitza l'estàndard de POSIX proporciona un alt nivell d'integració en tots els sistemes compatibles amb POSIX, com, per exemple, GNU / Linux, Mac OSX, BSD, i fins i tot Microsoft Windows (amb algunes addicions). En aquest article ens referirem a l'ús del compilador GCC en GNU / Linux, per descomptat, totes les consideracions es traslladen a qualsevol altre entorn POSIX.

Una primera (incorrecte) exemple

El pthread.h biblioteca ofereix tot el necessari per a la programació en un multi-fils, en lloc de fer una simple llista de primitives sempre, presentarem un exemple pràctic de tant en tant discuteixen les seves diferències.

Així que considera el següent problema: transferència bancària, el programa per llegir arxius de la collita diversos i / o dipòsits que s'han de fer en un compte, de manera que aquests arxius tenen la següent forma:






 120







 -550







 896







 5541







 -85







 ...



Per accelerar diversos temes "caixer" operen cada un en un sol arxiu i al mateix temps actualitzar el compte del client, realitzem totes les operacions de sortida de l'estat del compte.

A la mateixa categoria ...
E-Learning
Web Màrqueting (Curs) Web Màrqueting (Curs)
Promoció del lloc, els motors de cerca i màrqueting. A partir de 39 €.
Webmasters Avançats (Curs) Webmasters Avançats (Curs)
Convertir-se en un professional Webmaster. A partir de 39 €.
XML (Curs) XML (Curs)
Creació d'instal · lacions de XML, XSL i altres llenguatges extensibles. A partir de 29 €.
Enllaços patrocinats