..


Enllaços patrocinats

Programació concurrent en C + +

Article escrit per Stefano Cancedda
Pàgina 1 de 6

La programació de seqüències ofereix la garantia que les instruccions s'executen sempre en ordre, sense variacions. El comportament resultant és determinista: la inserció d'aquestes entrades, la sortida s'obté el mateix resultat.
Per a cada programa que s'executa el sistema operatiu crea un procés que assigna un espai de memòria protegida. Això assegura la possibilitat de processos independents que operen simultàniament sense errors.

Diferent (i més avançada) és la programació concurrent. Abans que el lloc es va a introduir i com funciona, al meu entendre, un determinat tipus d'objecte anomenat un fil del nucli.

Com els objectes fil del nucli són administrats pel sistema operatiu, i tenen dues característiques fonamentals:

  • Cada fil té una estructura de dades privades, que emmagatzema la seva pròpia pila, la informació d'excepció, la següent instrucció a ser executada;
  • Cada fil comparteix amb tot el procés una àrea de memòria comuna.
L'ús de fil ofereix diversos avantatges en termes d'execució. En particular, explotar al màxim el rendiment de CPU multi-core, que són en l'actualitat la tecnologia dominant en el mercat d'ordinadors personals. És impensable que una certa complexitat de les aplicacions modernes estan dissenyades d'una manera seqüencial, el que podria aprofitar el moment, només un dels principals que ofereix la màquina.

Com una altra avantatge, que pot ser vist com dos processos diferents que s'executen el mateix codi, possiblement amb paràmetres diferents, són menys eficients que els dos temes que pot utilitzar directament la memòria compartida. En un sistema que no admet discussions, si es vol executar diverses vegades el mateix programa, ha de crear diversos processos basats en el mateix programa. Aquesta tècnica funciona, però és un malbaratament de recursos i és més lent.

En tercer lloc, els temes tenen l'avantatge si se'ls diu el bloqueig d'E / S: en lloc d'esperar que l'esdeveniment activat per l'usuari detenir l'execució de l'algorisme, es pot començar una nova discussió i evitar temps d'inactivitat innecessaris la qual cosa empitjora el rendiment general.

D'altra banda es necessita el suport de la programació concurrent sincronització de les construccions, essencial per evitar accessos aleatoris als errors de memòria compartida causa a la sortida. També exposa que el programador introdueix en una sèrie d'errors sovint impredictibles a causa del comportament no determinista del programa.

Més enllà d'aquesta sincronització construccions tenen un cost, tant en termes de temps de màquina necessaris per executar el seu codi en una pèrdua de rendiment causada per particulars de les expectatives generades per aquestes construccions per tal de garantir la imparcialitat en l'exercici del competidor.

Els principals objectes que permeten la gestió de la competència es preveu a continuació i es descriuen detalladament en els paràgrafs següents:

  • Els elements volàtils
  • Funcions d'enclavament
  • Semàfors
  • Les seccions crítiques
  • Esdeveniments
  • Temporitzador
  • Mutex
Cadascun d'aquests elements en forma d'una forma natural de resoldre una classe específica de problemes senzills. Per problemes més complexos només els mateixos elements combinats junts per obtenir un resultat correcte i aprovació satisfactòria de la resolució de problemes que requereixen l'ús d'un dels primers i els problemes que es defineixen com anteriorment és un complex molt crític. La combinació d'objectes de sincronització pot ser complicat, en el millor perquè no es pot obtenir un rendiment prou alt en el pitjor dels casos, perquè no és fàcil trobar la solució que assegura l'exactitud del resultat. Almenys no el pitjor dels casos: hi ha un error greu i no va identificar immediatament. Aquesta conjuntura és molt freqüent, tant per la delicadesa dels temes que es discuteixen, és el fet que la depuració és sempre problemàtica en un entorn concurrent, els fluxos són, de fet, no determinista d'execució, cada execució del programa, l'ordre el processador realitza les operacions és sempre diferent.

A la mateixa categoria ...
E-Learning
Flash MX i ActionScript (Curs) Flash MX i ActionScript (Curs)
Convertir-se en un desenvolupador de llocs web des de 29 €.
HTML (del curs) HTML (del curs)
El llenguatge de marcat per a la web des de 29 €.
Photoshop (Curs) Photoshop (Curs)
Web de gràfics i edició fotogràfica amb Adobe Photoshop famosos. A partir de 49 €.
Enllaços patrocinats