The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Google начал открытие реализации модели потоков M:N"
Отправлено Ordu, 02-Авг-20 01:18 
Да потому, что вопрос твой -- бред.

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

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

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

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

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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