Net, piscina curge CLR
crearea de fir are nevoie de timp. Dacă există pentru a efectua o varietate de sarcini scurte, puteți crea un set de fire în avans și apoi doar trimite cereri adecvate atunci când este rândul pentru executare. Ar fi frumos dacă numărul acestor fire crește automat odată cu creșterea cererii de flux și a scăzut atunci când o cerere pentru eliberarea de resurse.
Pentru a crea o astfel de listă de fluxuri pe cont propriu, nu au nevoie. Pentru a gestiona o astfel de listă este prevăzută clasa ThreadPool. care scade după cum este necesar, și crește numărul de fire în piscină la maxim. Valoarea numărului maxim de fire din piscina poate varia. În cazul CPU dual-core, este fluxul de lucru implicit 1023, și 1000 de intrare și de ieșire fluxuri.
Puteți specifica numărul minim de fire care trebuie să fie început imediat după crearea regrupării, iar numărul maxim de fluxuri care sunt disponibile în piscină. Dacă au existat locuri de muncă care urmează să fie prelucrate, și a fost atins numărul maxim de fire în piscină, mai multe noi locuri de muncă vor fi în coada de așteptare și de acolo așteptați până când unele dintre fluxurile pentru a finaliza activitatea.
Pentru a solicita un flux de la piscina pentru metoda de procesare a apelului poate fi utilizată metoda QueueUserWorkItem (). Această metodă este supraîncărcat, în plus față de instanța delegat WaitCallback permite să specificați un parametru opțional pentru datele de stat speciale System.Object.
După rularea acestei aplicații este că este posibil să se utilizeze la 1023 de fluxuri de lucru parametri actuali. Cinci sarcini sunt tratate doar două fire de la piscina. Aveți aceste rezultate poate arata un alt mod. În plus, dacă modificați timpul de inactivitate pentru locuri de muncă, iar numărul mare de sarcini care urmează să fie prelucrate, atunci rezultatele vor fi mai diferite.
Aici se pune întrebarea: Care este avantajul de a folosi un bazin de fir CRJ sprijinit în comparație cu crearea explicită a unui obiect fir? Aceste avantaje vor fi:
Poole fluxuri efectiv controlează debitul prin reducerea cantității produse, sunt pornite și oprite debit.
Folosind un bazin de fir, vă puteți concentra pe rezolvarea problemei, mai degrabă decât pe fluxurile de aplicații de infrastructură.
Cu toate acestea, în unele cazuri, de preferință, un control al fluxului manual. piscine Thread este foarte ușor de aplicat, cu toate acestea, au o serie de limitări, care sunt enumerate mai jos:
Toate firele din piscina firului sunt de fond. În cazul în care finalizarea tuturor fluxurilor prioritare în procesul activității tuturor fluxurilor de fond se oprește, de asemenea. Asigurați-vă fluxul de prioritate nu poate fi o piscină.
Nu se poate schimba prioritatea sau numele de piscină în fluxul. Toate firele din piscina sunt fluxuri de apartament multifir (apartament multifir - MTA), și multe obiecte COM necesită utilizarea unui singur fir de ață un apartament (un singur fir apartament - STA).
Fluxurile într-un bazin adecvat pentru realizarea sarcinilor doar scurte. Dacă doriți să flux să funcționeze tot timpul (ca, de exemplu, fluxul de corectorul ortografic în Word), acesta trebuie să fie create folosind clasa fir.
Nu puteți crea un fir cu o identitate fixă pentru a fi capabil să-l întrerupă sau găsi numele.