. .NET framework este o bibliotecă de clase de execuție pentru C#, . .NET este un mediu multi-threaded. Un fir este un singur proces de control secvențial într-un proces. Un fir este o entitate într-un proces. Un proces poate avea mai multe fire de execuție, iar un fir trebuie să aibă un proces părinte.
Firele de execuție au, în general, trei stări de bază: citire, blocare și operare. Din cele trei stări de bază sunt derivate cinci operații de bază ale firelor de execuție. Mai întâi, derivă, firele de execuție sunt derivate într-un proces. În al doilea rând, programează, selectează un fir gata pentru a intra în starea de operare. În al treilea rând, blochează, dacă un fir de discuție trebuie să aștepte ca un eveniment să aibă loc în timpul execuției, acesta va fi blocat. În al patrulea rând, deblochează, dacă evenimentul începe, firul de discuție este deblocat, intrând în coada de pregătire. În al cincilea rând, finish, firul se termină, iar contextul registrelor și conținutul stivei pe care l-a executat sunt eliberate.
Un thread nou este un obiect thread nou generat care încă nu a alocat resurse. Prin urmare, poți folosi doar metodele start() sau close().
Starea rable este atunci când firul primește resursele necesare pentru fir după ce metoda start() rulează și cheamă metoda run() pentru a executa.
Starea Not Runable este o stare care intră atunci când apar următoarele evenimente, metoda suspend() este apelată, metoda sleep() este apelată, firul folosește wait() pentru a aștepta variabila condiție, iar firul așteaptă I/O.
Dead este atunci când metoda Run() revine, sau un alt fir apelează metoda stop(), iar firul intră în starea de moarte. Mai jos sunt două exemple simple de Thread.
Rezumat: De ce să folosești Thread (multi-threading)? Acest lucru este pentru a preveni blocarea firului principal, dacă trebuie să procesezi o cantitate mare de date sau să apelezi la o metodă consumatoare de timp, trebuie să folosim multi-threading.
Exemplu:
Nu folosesc multithreading: Interfața nu răspunde... Este pentru că multithreading-ul nu este folosit
|