@ JaredPar дает отличный ответ . Тем не менее, при некоторых обстоятельствах может не стоить переписывать код, чтобы он был многопоточным. Многопоточный код более сложен и добавляет целый ряд дополнительных типов ошибок, с которыми приходится бороться.
Однако в простом случае настольного приложения иногда стоит оставить второе ядро двухъядерной машины свободным, чтобы операционная система могла использовать его для таких вещей, как перерисовка экрана для других приложений, запуск антивирусный сканер и т. д.
Не тот ответ, который вы особенно хотели услышать, но, тем не менее, прагматичный в некоторых случаях.