Существует два основных преимущества многопоточности.
Это позволяет выполнять непоследовательные вычисления одновременно, повышая скорость выполнения.
Это также позволяет программе не останавливаться при ожидании блокирующих операций.
В вашем примере нет увеличения скорости выполнения,потому что процессор все еще должен выполнять каждую из команд в одном ядре.Однако, если вы ожидаете пользовательского ввода во время цикла (или выполняете другое блокирующее приложение), вы не сможете завершить doOtherStuff (), если он находится в том же потоке.Храня doOtherStuff () и его операции блокировки в отдельном потоке, вы не задерживаете выполнение операции суммирования.
Чтобы несколько приложений работали с одноядерным процессором, операционная система использует раундРобин исполнение.Он перемещается из одного потока / приложения в другой, выполняя несколько строк одновременно.Разделив ситуации блокировки на разные потоки, вы можете воспользоваться этим.Обычно это делается с помощью операций ввода-вывода.
Теперь, «это хуже?»
Если у вас ограниченная память, могут возникнуть проблемы, поскольку каждый поток несет свой собственный стек.Однако, поскольку операционная система уже переключает контекст между различными приложениями и операциями, недостаток времени выполнения путем добавления в циклический прием, вероятно, будет небольшим.