The OpenNET Project / Index page

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



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

Исходное сообщение
"Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."
Отправлено Ordu, 03-Ноя-21 02:10 
> Ну это то я знаю. Я к тому что до появления асинк
> авейта тонкио предоставлял своё особое апи.

Если я правильно понимаю о чём ты, то он точно так же продолжает предоставлять своё особое апи. Всякие там tokio::{net, fs, io, ...}.

> Я не сильно в курсе как это работает в расте. С появлением
> амтнк авейта можно же использовать асинхронные версии функций из стандартной библиотеки,
> сетевых и прочего ввода вывода?

В стандартной библиотеке нет async функций. Их не реализовать без рантайма. Async функция должна вернуть Future, трейт Future описан в std, но чтобы вернуть Future нам нужен конструктор, чтобы создать инстанс Future, то есть одного трейта мало. А реализация трейта Future и, в частности, реализация конструктора -- это задача рантайма. В std есть примитивные реализации Future для некоторых типов, но примитивные, в которых заведомо не надо переключать контексты выполнения, или что там в рантайме надо делать, чтобы переключиться с выполнения одной асинхронной задачи на выполнение другой.

Рантайм для async в расте, это что-то типа главного цикла в apache, занятого вызовами select, и диспатчем управления туда, где собственно идёт работа с данными вычитанными из сокетов. Если у нас нет реализации этого главного цикла, то мы не можем с ним взаимодействовать. То есть мы вообще ничего не можем написать. Вот есть у нас сокет, мы можем из него аккуратно попробовать прочитать что-нибудь, так чтобы ядро не заблокировало бы наш поток выполнения. Но как? Неблокирующий режим файловому дескриптору повесить?  Или может тщательно следить за возвращаемым значением, чтобы читать ровно до того момента, когда следующий вызов приведёт к блокировке, и останавливаться тогда? Непонятно, потому что разные рантаймы могут по-разному заходить к этому вопросу. Кто-нибудь вообще может попытаться сделать это через signal-driven модель. И в каждом случае читать из файлового дескриптора придётся по-разному.

 

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



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

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