Chcę wiedzieć, ile wątków będzie używanych po uruchomieniu pętli Parallel.For/ForEach.Ile wątków Parallel.For (Foreach) utworzy? Domyślny MaxDegreeOfParallelism?
Znalazłem, że można go zmienić za pomocą opcji MaxDegreeOfParallelism.
MaxDegreeOfParallelism pomocy w MSDN mówi (link):
Domyślnie Za i ForEach wykorzysta jednak wiele gwintów bazowego harmonogram przewiduje więc zmieniając MaxDegreeOfParallelism z ustawienie domyślne tylko limity, ile jednoczesnych zadań będzie być użytym.
Ale nie wiem, ile wątków podanych harmonogramu zapewnia.
Jak mogę się tego dowiedzieć?
Mogłem przetestować go z pętlą z 9999999 uruchomień, jednak ten test pokaże mi liczbę, ale nie reguła, która określa tę liczbę.
Edycja/dodane później:
google dla "sheduler max współbieżności" i znalazłem (w MSDN - link), że TashSheduler
klasa ma MaximumConcurrencyLevel
nieruchomości, oraz:
Zwraca liczbę całkowitą reprezentujący maksymalny poziom współbieżności. Domyślny program planujący zwraca wartość Int32.MaxValue.
Że klasa TaskSheduler jest używana jako "podstawowy harmonogram" dla tych równoległych pętli?
Co ciekawe, zwraca stałą '2147483647' .. nie' int32.MaxValue'. –