The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз платформы разработки асинхронных приложений Tokio 1.13.0, opennews (??), 31-Окт-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


68. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +/
Сообщение от Аноньимъ (ok), 31-Окт-21, 11:11 
В расте же вроде async await ввели, и все эти токии с этим не очень то стали нужны?
Ответить | Правка | Наверх | Cообщить модератору

99. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +1 +/
Сообщение от anonymous (??), 31-Окт-21, 11:41 
Хоть один интересный комментарий. Удваиваю вопрос.
Ответить | Правка | Наверх | Cообщить модератору

100. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +3 +/
Сообщение от Анонимъ (?), 31-Окт-21, 11:47 
Tokio в числе прочего предоставляет рантайм для async/await. Стандартного рантайма в Rust нет.
Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

104. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  –1 +/
Сообщение от Аноньимъ (ok), 31-Окт-21, 11:59 
> Tokio в числе прочего предоставляет рантайм для async/await. Стандартного рантайма в Rust
> нет.

Об этом я то же слышал. Но в целом получается запутанная ситуация.
Стоит ли считать Токио устаревшим или в нём какие-то очень удобные плюшки есть?

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

125. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +4 +/
Сообщение от Ordu (ok), 31-Окт-21, 13:12 
Чтобы async/await работали бы, нужен движок, т.н. рантайм, который будет шедулить выполнение задач. В отличие от Go раст не реализует рантайм: возможны разные подходы к реализации, и, во-первых, прибивать какой-то один гвоздями к расту как-то некомильфо, во-вторых, такой рантайм -- это проблема сильно не того класса, которым заняты разработчики rustc и std. Это уже _системное_ программирование, а не создание языка под системное программирование. Rust лишь предоставляет необходимые примитивы, такие как std::future::Future, и немного синтаксического сахара в виде кейвордов async/await.

И, поэтому, если хочется async/await, то либо ты берёшь и пишешь свой рантайм, дёргая epoll, отслеживая состояния задач и тп. Либо ты берёшь tokio, который делает это за тебя. tokio при этом не только движок, но параллельно кучу других няшностей даёт, которые могут быть весьма полезны.

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

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

215. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +/
Сообщение от Аноньимъ (ok), 03-Ноя-21, 00:44 
Ну это то я знаю. Я к тому что до появления асинк авейта тонкио предоставлял своё особое апи.

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

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

216. "Релиз 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ообщить модератору

226. "Релиз Tokio 1.13.0, платформы для создания асинхронных прило..."  +/
Сообщение от Аноньимъ (ok), 04-Ноя-21, 18:19 
Ну например в шарпе есть интерфейс фьючев, функции ввода вывода в стандартной библиотеке его реализуют.
А ивент луп можно самому написать вместо стандартного.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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