Extras din laborator
1. Scopul lucrării:
Realizarea firelor de execuție în C#.
2. Obiectivul lucrării:
Crearea firelor de execuție în C# și utilizarea tehnicilor de sincronizare în cadrul aplicațiilor concurente C#.
3. Programare multithreading
3.1. Definiția procesului
Un proces sau task, este un calcul care poate fi executat concurent (în paralel) cu alte calcule. El este o abstractizare a activității procesorului, fiind considerat ca un program în execuție. Existența unui proces este condiționată de existența a trei factori:
- o procedură - o succesiune de instrucțiuni dintr-un set predefinit de instrucțiuni, cu rolul de descriere a unui calcul - descrierea unui algoritm.
- un procesor - dispozitiv hardware/software ce recunoaște și poate executa setul predefinit de instrucțiuni, și care este folosit, în acest caz, pentru a executa succesiunea de instrucțiuni specificată în procedură;
- un mediu - constituit din partea din resursele sistemului: o parte din memoria internă, un spațiu disc destinat unor fișiere, periferice magnetice, echipamente audio-video etc. - asupra căruia acționează procesorul în conformitate cu secvența de instrucțiuni din procedură.
Trebuie deci făcută deosebirea dintre proces și program. Procesul are un caracter dinamic, el precizează o secvență de activități în curs de execuție, iar programul are un caracter static, el numai descrie textual această secvență de activități.
Evoluția în paralel a două procese trebuie înțeleasă astfel:
Dacă Ii și Ij sunt momentele de început a două procese Pi și Pj, iar Hi și Hj sunt momentele lor de sfârșit, atunci Pi și Pj sunt executate concurent dacă:
max (Ii, Ij) <= min (Hi, Hj)
3.2. Definiția threadului
Un thread se definește ca o entitate de execuție din interiorul unui proces, compusă dintr-un context și o secvență de instrucțiuni de executat.
Printre caracteristici de bază ale acestor entități:
- Thread-urile sunt folosite pentru a crea programe formate din unități de procesare concurentă.
- Entitatea thread execută o secvență dată de instrucțiuni, încapsulate în funcția thread-ului.
- Execuția unui thread poate fi întreruptă pentru a permite procesorului să dea controlul unui alt thread.
- Thread-urile sunt tratate independent, fie de procesul însuși, fie de nucleul sistemului de operare. Componenta sistem (proces sau nucleu) care gestionează thread-urile depinde de modul de implementare a acestora.
- Operațiile de lucru cu thread-uri sunt furnizate cu ajutorul unor librării de programe (C, C++) sau cu ajutorul unor apeluri sistem (în cazul sistemelor de operare: Windows NT, Sun Solaris).
Esența conceptuală a threadului este aceea că execută o procedură sau o funcție, în cadrul aceluiași proces, concurent cu alte thread-uri. Contextul și zonele de date ale procesului sunt utilizate în comun de către toate thread-urile lui.
Un program multi-thread poate să obțină o performanță îmbunătățită prin execuția concurentă și/sau paralelă a thread-urilor. Execuția concurentă a thread-urilor (sau pe scurt, concurență) înseamnă că mai multe thread-uri sunt în progres, în același timp. Execuția paralelă a thread-urilor (sau pe scurt, paralelism) apare când mai multe thread-uri se execută simultan pe mai multe procesoare.
Bibliografie
1. Rodney Ringler - Programare Multi-Threading, anul publicării: 2014
2. Дeниc Рeчкyнoв - Пapaллeльнoe пpoгpaммиpoвaниe в .NET Framework 4.0, http://www.enterra.ru/blog/parallel-programming-in-net-framework-4-0/, data publicării: 17.01.2013 , data accesării: 28.03.2015
Preview document
Conținut arhivă zip
- Programare multi-threading.docx