Дело в том, что подавляющее большинство программистов не понимают, как проектировать конечный автомат. Возможность поместить все в собственный поток освобождает программиста от необходимости думать о том, как эффективно представлять состояние различных выполняемых вычислений, чтобы их можно было прервать, а затем возобновить.
В качестве примера рассмотрим сжатие видео, очень трудоемкую задачу. Если вы используете инструмент графического интерфейса, вы, вероятно, хотите, чтобы интерфейс оставался отзывчивым (отображал прогресс, отвечал на запросы отмены, изменял размер окна и т. Д.). Таким образом, вы разрабатываете свое кодирующее программное обеспечение для обработки большого блока (одного или нескольких кадров) одновременно и запускаете его в своем собственном потоке, отдельном от пользовательского интерфейса.
Конечно, как только вы поймете, что было бы неплохо иметь возможность сохранить текущее состояние кодирования, чтобы вы могли закрыть программу для перезагрузки или играть в ресурсоемкую игру, вы понимаете, что должны были научиться проектировать состояние машины с самого начала. Либо так, либо вы решили создать совершенно новую проблему спящего режима вашей ОС, чтобы вы могли приостанавливать и возобновлять отдельные приложения на диск ...