Очень хорошая причина для «преобразования» заключается в том, что многоядерные машины становятся нормой, и довольно печально видеть, что старые программы работают плохо, потому что они работают только на одном ядре.
У меня было приложение для обработки чисел, в котором одна часть была очень медленной на Mac с 16 виртуальными ядрами для необходимого (и часто называемого) алгоритма сортировки, который работал только на одном ядре. Я реализовал свой собственный многопоточный алгоритм сортировки, чтобы адаптировать его к числу ядер и бинго, чтобы добиться невероятного ускорения.
Такое очень неоптимизированное поведение хорошо видно при использовании монитора процессора.
Итак, один ответ на ваш вопрос "когда мы должны использовать нить?" просто «когда вы искусственно замедляете работу своего программного обеспечения, заставляя его работать только на одном ядре».
В качестве примечания, это очень интересно, потому что в этом примере сложность алгоритма сортировки остается O (n log n), но «эффект распараллеливания» дает потрясающий прирост скорости.
Другими причинами может быть то, что в некоторых случаях правильная многопоточность вашего приложения, например, с использованием продуманной схемы «прокурор / потребитель», также может помочь снизить конкуренцию за ресурсы.