The OpenNET Project / Index page

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



"Релиз платформы разработки асинхронных приложений Tokio 1.13.0"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..." +/
Сообщение от Ordu (ok), 03-Ноя-21, 02:10 
> Ну это то я знаю. Я к тому что до появления асинк
> авейта тонкио предоставлял своё особое апи.

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

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

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

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

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

Оглавление
Релиз платформы разработки асинхронных приложений Tokio 1.13.0, opennews, 31-Окт-21, 08:09  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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