[ jovanpavlovic777 @ 28.03.2015. 18:00 ] @
Kakve su perfomanse koda radjenog u TPL-u odnosu na kod koji je pisan sa native Windows Thread-ovima?
U smislu toga koliko bolje unmanaged C++ (VC++) optimizuje kod, da li ce se taj kod brze i efikasnije izvrsavati.
Ne bitno da li direktno radimo sa threadovima (preko CreateThread API poziva) ili koriscenjem nekog unmanaged ThreadLibrary-ja ili Frameworka.
Inace jasno mi je da je TPL u svakom slucaju bolji za produktivan razvoj.
Ovde me samo interesuju konkretne perfomanse unmanaged vs managed, da li su te razlike merljive i znacajne za generalan razvoj softvera.
[ mmix @ 28.03.2015. 22:08 ] @
.NET ima Execution and Sync Context, sto native thread switching nema. Razlike u implementaciji su zanemarljive, TPL je deep-down wrappovan oko native Windows Threadova.

U osnovi, kad pricas o performansama paralelizovanog koda, mehanizam paralelizacije je manje vazan od toga sta i kako paralelizujes i koliko dobro mozes da particionises poslove tako da se ne "sudaraju" (i samim tim forsiraju jedni druge u wait staeove nad skupim sync primitivama). .NET, sada posebno sa async/await, daje mnogo vise mogucnosti da se optimalno iskoristi raspolozivi hardver i minimizuje idle time. U C++ implemetnaciji sve to moras da uradis sam, sa promenljivo dobrim rezultatima.