Fire și filetare

NET Framework subdivide în continuare procesul de sistem de operare facilitat de domenii de aplicare cauzatoare sub controlate, reprezentate de System. AppDomain. Unul sau mai multe fire gestionate (reprezentate System.Threading. Subiect) poate fi efectuată în una sau mai multe domenii de aplicare într-un proces controlat. În ciuda faptului că fiecare domeniu de aplicare este pornit cu un singur fir, codul în acest domeniu pot crea domenii suplimentare și fluxurile de aplicații. Datorită acestui flux controlat se pot mișca liber între domenii de aplicare în cadrul aceluiași unul din procesul de controlat; între mai multe domenii de aplicare, în același timp, doar un singur fir poate fi mutat.

Sistemul de operare care suportă multitasking, creează efectul de executare simultană a mai multor fire de mai multe procese. Acest lucru se realizează prin distribuirea secvențială timpul CPU disponibil între debitul necesar. În prezent, firul de executare este suspendată după timpul alocat; apoi executați un alt fir. La trecerea de la un flux la un alt context curent, care a fost suspendat, acesta este salvat, iar următorul firul în contextul coada este încărcat.

Suma alocată pentru curgerea timpului este determinat de sistemul de operare și procesor. Din acel moment, puține de mai multe fire de executie va avea loc aproape simultan, chiar și cu un singur procesor. Într-un sistem multiprocesor pentru a executa fire sunt distribuite între procesoarele disponibile.

Pentru a se asigura rapid software-ul utilizat experiență de utilizare dori să răspundă cât mai curând posibil pentru acțiunile sale. În același timp, aceasta ar trebui să facă calculele necesare pentru raportarea rapidă. Dacă cererea dumneavoastră utilizează un singur fir de execuție se poate combina programarea asincron cu cadrul Remoting .NET și serviciile Web XML. creat folosind ASP.NET. Acest lucru face posibilă creșterea vitezei de răspuns al sistemului la acțiunile utilizatorului și de a reduce timpul de procesare în cerere. Atunci când se efectuează un număr mare de operațiuni de intrare-ieșire pentru a crește viteza de reacție a sistemului se poate utiliza, de asemenea, porturile de finalizare IO.

Utilizarea mai mult de un fir este cel mai puternic mijloc de creștere a vitezei de răspuns al sistemului la intrare de utilizator, precum și mijloacele de prelucrare a datelor necesare pentru a efectua simultan sarcina. Pentru prelucrarea datelor în fundal pe computer cu un singur procesor, acest efect este realizat prin utilizarea perioade de timp mai mici între evenimente de utilizator. De exemplu, deoarece utilizatorul face modificări în alte părți din tabel poate recalcula foaia de calcul și un alt flux în această aplicație.

Performanța acestei aplicații pe un computer cu mai multe procesoare va fi semnificativ mai mare. Pentru a efectua următoarele sarcini în domeniul de aplicație pe care doriți să utilizați mai multe fire.

Interacțiunea printr-o rețea de pe un server web și baze de date.

Executarea operațiunilor, consumatoare de timp.

Împărțirea sarcinilor pe priorități. De exemplu, un fir de înaltă prioritate este responsabil pentru sarcini urgente, cu prioritate redusă - pentru toate celelalte.

Salvarea posibil ca răspuns la interfața cu utilizatorul în alocarea de timp pentru sarcini de fond.

Pentru a crește productivitatea și a reduce cantitatea de resurse de sistem utilizate recomandă utilizarea cât mai puțin posibil fluxuri. În plus, atunci când se utilizează debitul trebuie să fie luate în considerare cerințele de resurse și posibilitatea de a erorilor din aplicație de proiectare. Următoarele cerințe de resurse.

Memoria utilizată de către sistemul de manipulare a datelor contextuale necesare proceselor, AppDomain și obiecte flux. Prin urmare, numărul de noi procese și obiecte de flux AppDomain limitat de memoria disponibilă.

timp CPU utilizat pentru urmărirea numărului de fluxuri. În cazul în care numărul de fluxuri este mare, cele mai multe dintre ele nu vor funcționa corect. În cazul în care majoritatea fluxului de curent este în același proces, fluxurile de alte procese sunt programate mai puțin frecvent.

Controlul codului cu un număr mare de fluxuri este destul de complex și poate cauza erori.

Odată cu distrugerea fluxurilor trebuie să ia în considerare problemele posibile și să ofere modalități de a le rezolva.

Atunci când schimbul de conflicte pot apărea la resurse. Pentru a le preveni pentru a sincroniza sau a controla accesul la resursele partajate. Sincronizare Eroare de acces (în același sau un alt domenii de aplicare) poate duce la un impas (flux încetează să dețină, așteptând finalizarea unui alt flux care, la rândul său, așteaptă până când primul curent) și condiția rasă (apariția rezultatelor neașteptate din cauza timpului incorecte relația dintre cele două evenimente). Sistemul include o sincronizare de obiecte folosite pentru a controla distribuirea resurselor între fire. Sincronizarea de resurse simplificată în cazul în care numărul de fire este mic.

Resurse care necesită sincronizare:

resurse de sistem (porturi seriale);

resursele utilizate de mai multe procese (descriptori de fișier);

Resurse un singur domeniu de aplicare (la nivel mondial, câmpuri statice și câmpuri de instanță), care sunt accesate prin mai multe fire.