Czy pule wątków są potrzebne do czystego kodu Haskella?

WReal World Haskell, Rozdział 28, Pamięć transakcyjna oprogramowania, rozwijany jest równoległy program do sprawdzania łączy internetowych. Pobiera wszystkie linki na stronie internetowej i trafia co raz za pomocą żądania HEAD, aby dowiedzieć się, czy łącze jest aktywne. Równoległe podejście ma na celu zbudowanie tego programu i następuje następujące oświadczenie:

Nie możemy po prostu utworzyć jednego wątku na adres URL, ponieważ może to spowodować przeciążenie procesora lub połączenia sieciowego, jeśli (jak się spodziewamy) większość linków jest aktywna i odpowiada. Zamiast tego używamy stałej liczby wątków roboczych, które pobierają adresy URL do pobrania z kolejki.

Nie do końca rozumiem, dlaczego ta pula wątków jest potrzebna zamiast używaćforkIO dla każdego linku. AFAIK, środowisko wykonawcze Haskell utrzymuje pulę wątków i odpowiednio je planuje, więc nie widzę przeciążenia procesora. Ponadto wdyskusja na temat współbieżności na liście mailingowej Haskell, Znalazłem następujące oświadczenie idące w tym samym kierunku:

Jednym paradygmatem, który nie ma sensu w Haskell, są wątki robocze (ponieważ RTS to robi dla nas); zamiast pobierać pracownika, po prostu forkIO.

Czy pula wątków jest wymagana tylko dla części sieci, czy też jest to uzasadnione z powodu procesora?

questionAnswers(1)

yourAnswerToTheQuestion