Post Thumbnail

В Zig 0.16 появился std.Io - кроссплатформенный интерфейс для ввода-вывода и конкурентности, но единственная встроенная реализация std.Io.Threaded использует потоки ОС, что не масштабируется. На std.Io.Threaded 10 000 задач с sleep выполняются ~20 секунд, а 50 000 упираются в лимиты системы.

Автор показывает свою библиотеку zio, которая реализует тот же std.Io, но поверх io_uring/kqueue/IOCP со стекфулл корутинами. И тут те же 10 000 задач отрабатывают за ~10 секунд без ограничения на количество потоков. При этом код приложения почти не меняется - достаточно инициализировать zio runtime и использовать его io() вместо std.Io.Threaded.

Хорошо, что в принципе двигаются к конкурентности

Похожее

Post Thumbnail

Треды в Zig

Автор разбирает устройство std.Io.Threaded в Zig - реализации интерфейса ввода-в...