Eugene-Usachev
@Eugene-Usachev

Почему в Rust использую Tokio?

Я не могу понять популярность Tokio. Стандартная библиотека Rust написана очень хорошо: она реализует весь необходимый функционал, работает гораздо быстрее Tokio. Я видел немного проектов, которые использовали бы стандартную библиотеку, большинство проектов, что я видел, такие как веб-серверы или коннекторы к СУБД написаны поверх Tokio. У Tokio более 24 тысяч звёзд на Github и она используется почти везде (даже в приложениях вроде Discord или Amazon). Но почему используют Tokio, а не стандартную библиотеку?
  • Вопрос задан
  • 3686 просмотров
Решения вопроса 1
@D3lphi
Потому что она реализует то, чего нет в стандартной библиотеке - асинхронный рантайм. Если писать сетевое приложение без токио, то придется плодить по отдельному потоку на каждый сетевой коннекшен. (на самом деле, речь идет про любой i/o, к которому чтение/запись файлов тоже относится) Каждый из этих потоков большую часть времени будет заблокирован в ожидании завершения сететвого вызова (передачи или приема данных). Однако, операционная система при разблокировке этих тредов будет постоянно переключать контекст для каждого потока и тратить процессорное время.
Асинхронный подход позволяет обойтись лишь сравнительно небольшим пулом потоков, на которые токио рантайм будет распределять таски (грин треды) и, таким образом, экономить процессорное время.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Rust currently provides only the bare essentials for writing async code. Importantly, executors, tasks, reactors, combinators, and low-level I/O futures and traits are not yet provided in the standard library. In the meantime, community-provided async ecosystems fill in these gaps.

There is no asynchronous runtime in the standard library

Из документации.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы