Обновить

Комментарии 4

многопоточности и еvent loop... ? Шта?

ИИ так сказала

Наверное, корректнее всё это назвать не многопоточностью, а многозадачностью. Потому что event loop однопоточный, но с натяжкой попадает под понятие кооперативной многозадачности.

Для полноты картины: в .NET потоки нативные; для параллельных вычислений могут создаваться руками или браться из пула, а в асинхронном выполнении всегда используется пул.

В 2023 году был большой эксперимент с зелёными потоками (которые ТС называет virtual threads), но идею в итоге отклонили из-за тормозов при вызове нативных и уже существующих асинхронных функций, а также из-за проблем с безопасностью.

Потом ещё был большой эксперимент по переносу асинхронности с уровня языка на уровень рантайма, и он умел успех, но внедрение этой фичи может занять ещё несколько лет.

У JVM короткие стеки, их быстро копировать при монтировании/размонтировании виртуального контекста в реальный. А основное преимущество VirtualThread – как раз в отсутствии дополнительной обвязки async'ами вы пишите/запускаете стандартный многопоточный Thread-код, даете ему VirtualThread Pool (хоть в легаси) и он исполняется теперь на VirtualThread. Это позволяет не ломать то, что уже есть, и оставаться жить в привычной "тредовой" модели исполнения воркеров, без новых конструкций наподобие реактивности.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации