Процессы, потоки, зеленые потоки, protothreads, волокна, сопрограммы:какая разница?

Я читаю на параллелизме. Я имею немногим выше головы с условиями, которые имеют смутно подобные определения. А именно:

  • Процессы
  • Потоки
  • "Зеленые потоки"
  • Protothreads
  • Волокна
  • Сопрограммы
  • "Goroutines" на языке Движения

Мое впечатление - то, что различия остаются на (1) или действительно параллельный или мультиплексированный; (2) ли управляемый в ЦП, в ОС, или в программе; и (3.. 5) несколько других вещей я не могу определить.

Существует ли сжатое и однозначное руководство по различиям между этими подходами к параллелизму?

46
задан jameshfisher 24 July 2010 в 10:04
поделиться

1 ответ

Хорошо, я постараюсь. Повсюду есть предостережения, но я сделаю все возможное, чтобы дать свое понимание этих терминов и ссылок на то, что приближается к определению, которое я дал.

  • Процесс : управляемый ОС (возможно) действительно параллельный, по крайней мере, при наличии подходящей аппаратной поддержки. Существуют в собственном адресном пространстве.
  • Поток : управляемый ОС, в том же адресном пространстве, что и родительский и все другие его потоки. Возможно, действительно одновременная работа, а многозадачность - упреждающая.
  • Зеленая нить : это проекции пользовательского пространства с той же концепцией, что и потоки, но не управляемые ОС. Вероятно, не совсем параллельные, за исключением того, что может быть несколько рабочих потоков или процессов, одновременно предоставляющих им процессорное время, поэтому, вероятно, лучше всего рассматривать это как чередование или мультиплексирование.
  • Protothreads : Я не мог придумать из них определение. Я думаю , что они чередуются и управляются программой, но не верю мне на слово. Мне казалось, что они, по сути, представляют собой зависящую от приложения реализацию той же модели «зеленых потоков» с соответствующей модификацией для домена приложения.
  • Волокна : под управлением ОС. Именно потоки, за исключением совместной многозадачности и, следовательно, не могут быть полностью параллельны.
  • Сопрограммы : Именно волокна, за исключением того, что они не управляются ОС.
  • Горутины : Они утверждают, что не похожи ни на что другое, но кажутся именно зелеными потоками, например, управляемыми процессами в едином адресном пространстве и мультиплексированными в системные потоки.Возможно, кто-нибудь с большим знанием Go сможет прорезать маркетинговые материалы.

Также стоит отметить, что в теории параллелизма есть и другие понимания термина «процесс» в смысле исчисления процессов . Это определение ортогонально приведенным выше, но я подумал, что его стоит упомянуть, чтобы не возникло путаницы, если вы где-то увидите процесс, используемый в этом смысле.

Также обратите внимание на разницу между параллельным и параллельным . Возможно, вы использовали первое в своем вопросе, хотя я думаю, что вы имели в виду второе.

56
ответ дан 26 November 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: