@Eric
@Derek, nu sunt de acord cu scenariul pe care îl folosiți ca exemplu. Dacă nu știți exact ce rulează pe mașină și exact câte fire, mânere, timp CPU, RAM etc., pe care aplicația dvs. le va utiliza sub o anumită încărcare, aveți probleme.
Sunteți singurul client vizat pentru programele pe care le scrieți? Dacă nu, nu poți fi sigură de cele mai multe. În general, nu aveți nicio idee atunci când scrieți un program dacă se va executa în mod eficient în mod solo sau dacă va rula pe un server web care este lovit de un atac DDOS. Nu puteți ști cât timp CPU aveți la dispoziție.
Presupunând că schimbările de comportament ale programului dvs. se bazează pe intrare, este rar să știi exact cât de multă memorie sau timp CPU consumă programul tău. Sigur, ar trebui să aveți o idee destul de bună despre modul în care se va comporta programul dvs., dar majoritatea programelor nu sunt analizate pentru a determina cât de multă memorie, câte mânere etc. vor fi folosite, deoarece o analiză completă este costisitoare. Dacă nu scrieți software în timp real, câștigul nu merită efortul.
În general, pretinzând că știi exact cum se va comporta programul tău este cu totul altminteri, și pretind că știi că totul despre mașină se apropie de absurd.
Și pentru a fi sincer, dacă nu știi exact ce metodă ar trebui să folosești: filete manuale, pile de filete, delegați și cum să le implementezi pentru a face exact ceea ce cererea ta are nevoie, ai probleme. >
Nu sunt total dezacord, dar nu înțeleg cum este relevant. Acest site este aici în mod special, deoarece programatorii nu au întotdeauna toate răspunsurile.
Dacă cererea dvs. este suficient de complexă pentru a solicita reducerea numărului de fire pe care le utilizați, nu veți dori aproape mai mult control mai mult decât ceea ce vă oferă cadrul?
Nu. Dacă am nevoie de un pool de fire, o să folosesc pe cea furnizată, dacă și până nu voi găsi că nu este suficient. Nu voi presupune pur și simplu că fondurile de fire furnizate sunt insuficiente pentru nevoile mele, fără a confirma acest lucru.
Nu vorbesc aici ca pe cineva care are doar cunoștințe teoretice. Scriu și mențin aplicații cu volum mare care folosesc greu multithreading-ul și, în general, nu găsesc piscul firului pentru a fi răspunsul corect.
Cea mai mare parte a experienței mele profesionale a fost cu programe de multithreading și multiprocesare. De multe ori am avut nevoie să îmi rog și propria soluție. Asta nu înseamnă că fondul de fire nu este util sau potrivit în multe cazuri. Piscul filetelor este construit pentru a gestiona firele lucrătorilor. În cazul în care firele multiple ale lucrătorilor sunt adecvate, grupul de fire furnizat ar trebui, în general, să fie prima abordare.