Ok, wróćmy do analogii:
Wyobraź sobie, że siedzisz w pokoju z kolegą i liczysz w pamięci po kolei - jeden
, dwa
, trzy
(...) - zapisując, po kolei za każdym razem, każdą liczbę na kartce, przekazując kartkę znajomemu, który czyta ją na głos, po czym oddaje Ci ją, abyś mógł zapisać kolejną liczbę. I tak raz po raz, liczba po liczbie.
Zdaje się, że będzie znacznie wolniejsze niż liczenie i mówienie na głos samemu, prawda? ;-)
Fachowo można powiedzieć, że będzie tutaj duży narzut związany z synchronizacją - aby uniknąć tzw. data race
(sytuacji w której jesteś w połowie zapisywania liczby np. 1520
, a kolega już zaczyna czytać kartkę i wychodzi z tego po prostu piętnaście
), musiałbyś tak czy siak czekać aż kolega przeczyta liczbę, a dopiero potem liczyć następną. I wydajność leci na łeb.
Tak jak powiedziałem: Twojego problemu nie da się w żaden sposób przyśpieszyć, biorąc pod uwagę to, co napisałeś - opowiedz coś więcej o tym Twoim algorytmie.
Wielowątkowość to bardzo skomplikowana sprawa, wbrew pozorom, i często nie jest wcale najlepszym podejściem do problemu.