Очень хорошая причина для «преобразования» в том, что многоядерные машины получают норму, и довольно грустно видеть, что старые программы плохо работают, потому что они работают только на одном ядре.
У меня было хрустящее приложение, где одна часть была очень медленной на Mac с 16 виртуальными ядрами для необходимого (и часто называемого) алгоритма сортировки, работающего только на одном ядре. Я реализовал свой собственный многопоточный алгоритм сортировки, чтобы адаптироваться к количеству ядер и бинго, удивительно ускорить процесс.
Такое очень неоптимизированное поведение можно четко увидеть с помощью монитора ЦП.
Итак, один ответ на ваш вопрос «когда мы должны использовать поток?» просто «когда вы искусственно замедляете свое программное обеспечение, заставляя его работать только на одном ядре».
В качестве побочного примечания это очень интересно, потому что в этом примере сложность сортировочного алгоритма остается O (n log n), но «эффект параллелизации» дает потрясающее ускорение скорости.
Другие причины могут заключаться в том, что в некоторых случаях правильная многопоточность вашего приложения, например, с использованием хорошо продуманной схемы procuder/consumer, также может помочь уменьшить разновидность ресурсов.
Сделайте это более читаемым, пожалуйста. Это очень трудно понять. – oneat
Я думаю, что в основном он хочет знать, какие стимулы были бы связаны с преобразованием однопоточного приложения в многопоточное. Последнее предложение его вопроса - «самый легкий» для понимания. – SyntaxT3rr0r
@oneat, в соответствии с их профилем «Читатель» из Нью-Дели, поэтому английский не является их «первым» языком, следовательно, менее совершенной грамматикой. Никогда не помешает предположить, что чей-то первый язык может быть не английским. =) – Rob