Prawie zawsze łatwiej jest myśleć sekwencyjnie, a następnie zmodyfikować tę logikę, aby lepiej działała przy użyciu wątków. I, jak mówi wyrażenie: „Jeśli nie jest zepsute, nie naprawiaj go”. Większość programistów nie używa wątków tylko dlatego, że nie ma potrzeby ich używania.
Jeśli czujesz się bardziej komfortowo z ich użyciem, masz dla ciebie więcej mocy. Jednak wiedz, że jeśli wątki nie zapewniają zwiększenia prędkości poprzez wyeliminowanie wąskich gardeł, prawie na pewno spowalniają twój program.
Weź również pod uwagę, że systemy, które poświęcają procesowi tylko jeden procesor, będą symulować wiele wątków przez jeden wątek, aby zaoszczędzić zasoby (nie zdarza się to często w nowoczesnych komputerach, chociaż aplikacje na smartfony są nadal bardzo narażone na takie nadużycia). W takim przypadku, nawet jeśli eliminujesz wąskie gardła za pomocą wątków, będzie to faktycznie wolniejsze, niż jeśli w ogóle nie używałeś wątków.
Być może jest to najbardziej subtelny powód, aby zachować ostrożność podczas używania wątków, ale z pewnością nie jest to najmniej ważne, że wątki mają tendencję do robienia tego, czego się nie spodziewasz. Tak, jeśli podejmujesz środki ostrożności, powinieneś być w porządku. Tak, jeśli twoje wątki nie zapisują do zmiennych współdzielonych między wątkami, powinieneś być w porządku. To powiedziawszy, błędy związane z wątkami są bardzo trudne do znalezienia. Ponieważ uważam, że programista nigdy nie może całkowicie wyeliminować możliwości tworzenia błędów w kodzie, a zatem programista powinien podjąć działania w celu ochrony przed możliwymi błędami, zamiast skupiać się na ich całkowitym wyeliminowaniu, zdecydowanie powinieneś zastosować ten pomysł do znaleźć również błędy wątków. Innymi słowy, wiedz, że pomimo twoich najlepszych starań,
Więc czy powinieneś używać wątków? Cóż, zdrowa znajomość wątków z pewnością nie jest złą rzeczą, szczególnie jeśli staniesz się w tym dobry. Jednak ostatnio nastąpił ruch w kierunku języków jednowątkowych, takich jak node.js. Jedną z głównych zalet posiadania pojedynczego wątku jest to, że można go łatwo skalować i można dokonać pewnych optymalizacji, jeśli wiadomo, że instrukcje powinny być uruchamiane sekwencyjnie (nawet jeśli optymalizacje mogą oznaczać, że instrukcje, które można uruchomić równolegle, mogą działać asynchronicznie).
To powiedziawszy, mówię: rób to, co najbardziej dla ciebie wygodne. Z mojego doświadczenia wynika, że pisanie programu, który rozumiesz, ma wyższy priorytet niż przyspieszenie jego działania. Pamiętaj tylko, aby używać wątków, gdy uważasz, że pomaga to napisać program, a nie dlatego, że chcesz, aby działał szybciej, ponieważ nie powinieneś martwić się tak bardzo o wydajność, jak piszesz program (optymalizacja jest ważna, ale jest może również poczekać).