<div class="gmail_quote">2009/6/9 Mihai Carnu <span dir="ltr">&lt;<a href="mailto:mihaicarnu@yahoo.com">mihaicarnu@yahoo.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><div>Buna,</div>
<div> </div>
<div>In enuntul temei se precizeaza ca trebuie sa folosim mecanismele cele mai scalabile oferite de sistemul de operare. In cazul Windows 2003, asta inseamna ca tre sa folosim thread pool-ul oferit de sistem (BindIoCompletionCallback()) ?</div>
</div></div></blockquote></div><br>O privire rapida pe MSDN pare sa confirme ca BindIoCompletionCallback e aceeasi Marie cu alta palarie, adica seamana foarte mult cu mecanismul de completion ports, cu diferenta ca pool-ul de threaduri pare sa fie manage-uit automat si nu mai exista un obiect explicit de completion port vizibil user-ului.<br>
<br>In acelasi timp, se pare ca pool-ul de threaduri de care se vorbeste poate creste pana la 500 de threaduri si asta nu e foarte bine. Numar mai mare de thread-uri poate insemna performanta mai proaste daca sunt multe cereri in paralel pt. ca se pierde timp cu context switching-ul. Ideal este cand pe fiecare core ruleaza un singur thread worker care proceseaza incontinuu. Atunci procesoarele sunt ocupate 100% cu munca utila. De-asta am precizat in enuntul temei ca nr. de threaduri trebuie sa fie egal cu numarul de procesoare din sistem.<br>
<br>Tema a fost creata in ideea de a se folosi completion ports cu pool de threaduri explicit creat de voi.<br>Daca ai timp si esti curios, poti face o comparatie intre cele 2 metode, chiar ar fi interesant de aflat care e mai scalabila in conditii extreme.<br>
<br>Cosmin.<br>