В чем разница между ласточкиным хвостом и параллелизмом?

Я столкнулся с определением ласточкиного хвоста, о котором раньше не слышал, и первое, что пришло мне в голову, - это параллелизм. Однако я не смог найти ни одного поста, связанного с этими двумя понятиями. Я тоже читал это.

Если я не ошибаюсь, "ласточкин хвост" каким-то образом связан с машинами Тьюринга и скорее теоретический, но оба они, интуитивно, связаны с распределением источника: выполнить немного из этого процесса и этого процесса в соответствии с неким предопределенным расписанием или набором правил.

Мой вопрос здесь, в чем разница? Или они вообще не сравнимые понятия?

3 ответа

Основная цель согласования в теории состоит в том, чтобы показать, как вы можете достичь конечной точки любого из бесконечного списка вычислений / задач (если такая конечная точка существует, то есть остановки вычислений) за конечное число шагов. Если вы работаете с вычислениями последовательно, то все, что произойдет после первого процесса без остановки, больше не будет выполняться.

Если список процессов не бесконечен, то вы также можете выполнить первую инструкцию для всех из них, затем вторую и так далее. "Диагональная" идея не нужна. Бесконечные списки процессов, вероятно, не так актуальны в параллельности.

В контексте потоков, ласточкин хвост кажется более близким к вытесняющей многопоточности, если мы предпочитаем breadth-first как обсуждалось на странице Википедии

Вытесняющая многопоточность, заставляет каждый поток покидать ЦП (временной интервал) и через некоторое время (нано сек) дает контроль другим потокам. Идти в ширину, а не в глубину

Ласточкин хвост совсем не теоретический. Любая ОС, допускающая несколько процессов или потоков, использует "ласточкин хвост". В противном случае одноядерный ПК не сможет обрабатывать несколько процессов или потоков. Ласточкин хвост был бы методом для реализации параллельных объектов, таких как потоки. Но параллелизм может обрабатываться также по-разному. Например, параллельные вычисления могут выполняться с помощью графических процессоров, а большинство современных процессоров имеют несколько ядер, что позволяет выполнять параллельное выполнение без согласования.

Другие вопросы по тегам