Im więcej używam Parallel.ForEach i PLINQ w moim kodzie, tym więcej widzę twarzy i recenzji kodu. Więc zastanawiam się, czy istnieje jakikolwiek powód, dla którego NIE używam PLINQ, w ekstremalnych przypadkach, na każdym wyciągu LINQ? Czy środowisko uruchomieniowe może nie być wystarczająco inteligentne, aby rozpocząć odradzanie się tylu wątków (lub zużywających tak wiele wątków z puli wątków), że wydajność aplikacji faktycznie by się pogorszyła, zamiast poprawić? To samo pytanie dotyczy biblioteki równoległej..NET 4 Parallel.ForEach i PLINQ: czy mogą przytłoczyć pulę wątków i zabić wydajność aplikacji?
Rozumiem konsekwencje związane z bezpieczeństwem wątków i narzutami korzystania z wielowątkowości. Rozumiem też, że nie wszystko jest dobre dla równoległości. Zastanawiam się tylko, czy powinienem przestać bronić swoich podejść i po prostu zrezygnować z tych dwóch drobnych rzeczy, ponieważ moi rówieśnicy myślą, że lepiej byłoby zrobić samemu kontrolę wątków zamiast polegać na urządzeniach .NET?
AKTUALIZACJA: należy założyć, że sprzęt jest wystarczająco dobry, aby spełnić wymagania wstępne dotyczące wielowątkowości.
Wierzę, chyba że ręcznie ustawisz plinq używa tylko kilku wątków na podstawie liczby rdzeni, które masz –
@LukeMcGregor: czy wiesz, jakie są wartości domyślne i jak je zmienić? – Schultz9999