Комментарии 7
зашел посмотреть какую же такую сложную задачу решил распараллелить автор. И автор не подвел, выбрал самую сложную задачу
tokio::time::sleep
то есть "спать"!
С такой задачей такие достижения:
Мы можем увеличить количество потоков до ста, и все будет работать нормально.
поражают воображение.
Если прочитать оригинал полностью, то будет понятно, что корректно имплементировать "спать" в мире асинхронных функций не так уж и просто: "как не заблокироваться?", "кто будет будить?", "как избежать ненужного поллинга?", "как реализовать отмену?", "как не дать протечь абстракции?", "как по дороге сохранить и не расплескать контекст исполнения?" и прочие тому подобные нюансы
А что не так-то? Статья-то не про реализацию этого самого sleep,. а про код вокруг него. sleep тут - просто "чёрный ящик", легко представить на его месте сетевой запрос (http, sql или любой другой).
ну расскажите как можно сетевой запрос (единственный) распараллелить на 100 потоков. Действительно, вы правы, нет никакой разницы распаралелить Sleep на 100 потоков или ожидание ответа на сетевой запрос (SQL запрос). Но это наверно не глупость, просто автор хотел привлечь внимание к своему труду и маленько слукавил.
А откуда вы вообще взяли условие "единственный"? Так же как каждый "поток" (который вообще не поток) ждёт свою независимую секунду - так же и сетевой запрос каждая задача будет делать свой.
так же и сетевой запрос каждая задача будет делать свой
тогда это тривиальная задача - выполняем независимо независимые задачи, не вижу смысла об этом рассуждать, объясните тогда в чем смысл статьи.
Асинхронный Rust в трех частях. Введение