Потоки значительно усложняют разработку, реализацию и отладку программы.
Тем не менее, многие люди считают, что каждая задача в программе, которая может быть связана с потоками, должна выполняться даже в одноядерной системе.
Я могу понять многопоточность, например, MPEG2-декодер, который будет работать на многоядерном процессоре (что я и сделал), но что может оправдать значительные затраты на разработку, связанные с многопоточностью, когда вы говорите об одноядерной системе или даже многоядерная система, если ваша задача не получает значительной производительности от параллельной реализации?
Или, более кратко, какие проблемы, не связанные с производительностью, оправдывают многопоточность?
Редактировать
Ну, я только что наткнулся на один экземпляр, который не ограничен ЦП, но потоки имеют большое значение:
TCP, HTTP и многопоточность Sweet Spot
Несколько потоков очень полезны, когда вы пытаетесь максимально увеличить пропускную способность для другого узла по высокоскоростному сетевому соединению. Неблокирующие операции ввода-вывода потребляли бы значительно меньше локальных ресурсов ЦП, но их было бы намного сложнее спроектировать и реализовать.