..


Link-uri sponsorizate

Programarea concurentă în C + +

Articol scris de Stefano Cancedda
Pagina 1 din 6

Secvenţa de programare oferă garanţia că instrucţiunile sunt întotdeauna executate în ordine, fara variatii. Comportamentul rezultă este deterministic: inserarea intrari aceeaşi, de ieşire se obţine acelaşi rezultat.
Pentru fiecare program care rulează sistemul de operare creează un proces care oferă un spaţiu de memorie protejat. Aceasta prevede posibilitatea ca procesele sunt independente care funcţionează simultan fără erori.

Diferite (şi mai avansate) este de programare concurentă. Înainte de asediu este să fie introdus şi cum funcţionează, în opinia mea, un anumit tip de obiect numit un fir nucleu.

Ca obiecte fire kernel-ului sunt gestionate de sistemul de operare, şi au două caracteristici fundamentale:

  • Fiecare fir are un privat structura de date, care stochează stivă proprie, informaţii excepţie, următoarea instrucţiune care urmează să fie executat;
  • Fiecare fir parts cu întregul proces-o zonă de memorie comună.
Utilizarea de fire are mai multe avantaje în ceea ce priveşte execuţia. În special, vom exploata la maximum de performanţă de procesoare multi-core, care sunt în prezent, tehnologia dominantă pe piaţă pentru calculatoarele personale. Este de neconceput faptul că o anumită complexitate de aplicaţii moderne sunt concepute într-un mod secvenţial, prin urmare, ar putea profita de timp, doar unul dintre bază prevede că aparatul.

Ca un alt avantaj, ea poate fi văzută ca două procese diferite rulează acelaşi cod, probabil cu parametrii diferiti, sunt mai puţin eficiente decât doua fire de executie care pot exploata în mod direct memoria partajată. Într-un sistem care nu acceptă fire, dacă doriţi să rulaţi de mai multe ori acelaşi program, trebuie să creaţi mai multe locuri de muncă bazate pe acelaşi program. Această tehnică funcţionează, dar este risipei de resurse si este mai lent.

În al treilea rând, firele au avantajul, dacă acestea sunt numite blocante I / O: în loc de aşteptare pentru evenimentul declanşat de către ghidul de oprirea executării algoritmului, puteţi începe un fir nou şi să prevină nefuncţionare inutile care se agraveaza performanta generala.

În contrast cu programarea concurente are nevoie de sprijinul constructe sincronizare, care sunt fundamentale pentru a evita erorile de acces aleatoriu la comun de memorie în cauza de ieşire. De asemenea, expune programator la o serie de erori de multe ori prost hrănit din cauza comportament imprevizibil al programului deterministe.

În afară de aceasta, construieşte sincronizare au un cost, atât în ceea ce priveşte timpul necesar aparatului pentru a executa cod lor într-o pierdere de performanţă special cauzate de aşteptările generate de aceste concepte, pentru a asigura corectitudinea în efectuarea concurent.

Principalele obiecte care permit gestionarea de concurenţă sunt anticipate de mai jos şi descrise în detaliu în următoarele alineate:

  • Elemente volatile
  • Funcţii interblocată
  • Semafor
  • Secţiunile critice
  • Evenimente
  • Programatorul
  • Mutex
Fiecare dintre aceste elemente se potrivesc într-un mod natural de a rezolva o anumită categorie de probleme simple. Pentru probleme mai complexe combina pur şi simplu aceste obiecte împreună pentru a obţine un rezultat corect şi trecerea satisfăcătoare de soluţionare a problemelor care necesită utilizarea unuia dintre cele mai timpurii şi problemele care sunt definite ca mai sus, este un complex extrem de critic. Amestec de obiecte de sincronizare poate fi complicată, în cel mai bun, pentru că nu poţi obţine o performanţă suficient de mare într-o cel mai rău caz, că nu puteţi găsi cu uşurinţă soluţia care asigură corectitudinea rezultatului. Nu în ultimul rând cel mai rău caz: există un bug fatală şi nu au identificat imediat. Acest moment este foarte frecvent, atât din cauza de sensibilitate a problemelor vom discuta, este faptul că depanare este întotdeauna problematică în mediul concurente, fluxurile sunt in executie deterministe fapt, fiecare executie a programului, pentru a procesorul efectuează operaţiuni este întotdeauna diferit.

În aceeaşi categorie ...
E-Learning
Front Page (Ebook) Front Page (Ebook)
Creaţi pagini Web fără a cunoaşte HTML. Doar 25 €.
MS Access (Avansat) MS Access (Avansat)
Aflaţi cum să creaţi şi să gestionaţi baze de date rapid şi uşor. Incepand de la 29 €.
Baza de webmaster (întâi) Baza de webmaster (întâi)
Creaţi un site Web de la zero. Incepand de la 29 €.
Link-uri sponsorizate