The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Google начал открытие реализации модели потоков M:N"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Ссылки "<<" и ">>" открывают первые и последние 10 сообщений.
. "Google начал открытие реализации модели потоков M:N" +1 +/
Сообщение от Ordu (ok), 02-Авг-20, 01:18 
Да потому, что вопрос твой -- бред.

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

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

В принципе, всё это было просто другим способом делать select/epoll: select/epoll прятались в библиотеке зелёных потоков, а программист писал, будто бы у него на каждое соединение свой собственный ядерный тред.

Но сочетать ядерные потоки с юзерспейсными сложно. Все попытки делать это в C разбивались об эту сложность. Тем временем функциональные языки потихоньку осваивали это дело. Гугл понаблюдал за ними, и запилил корутины в Go. Фишка в том, что программист комбинирует операции, задавая порядок выполнения, а потом рантайм эти операции раскидывает по ядерным потокам, выполняя что-то параллельно, а что-то последовательно.

Это очень упрощённая версия истории событий, но основной вывод отсюда: корутины и юзерспейс-многозадачность -- это разные способы для программиста выполнять те же самые задачи мультиплексирования ввода/вывода, то есть переупорядочивать операции, выполнять их по мере готовности данных, по возможности выполнять максимум операций параллельно на разных ядрах, и тп. Повышение или снижение безопасности может случится, если один из подходов больше способствует возникновению программерских ошибок, а другой меньше. Но... ты действительно хочешь об этом поговорить? Что-то мне подсказывает, что это не то, что тебя интересует. И поэтому я говорю тебе: вопрос твой -- бред. И поэтому ты получаешь минусы.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Google начал открытие реализации модели потоков M:N, opennews, 28-Июл-20, 13:03  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру