Lwt означает "легкая нить"?

Я тестировал ocsigen, который использует Lwt. Я думаю, что Lwt означает "легкая нить", верно? Если так, как мы можем назвать это "легким весом"?

Кажется, что Lwt использует поток ОС, который НЕ легок (по сравнению с Эрлангом и Хаскеллом).

Пожалуйста, пролите свет на меня, спасибо!

2 ответа

Решение

На странице документации для Lwt написано:

[Lwt] обеспечивает очень легкие кооперативные нити; `` запуск '' потока - это очень быстрая операция, для которой не требуется новый стек, новый процесс или что-либо еще. Более того, переключение контекста происходит очень быстро. На самом деле, это так просто, что мы запускаем поток для каждого системного вызова. А создание совместных потоков позволит нам писать сильно асинхронные программы.

Да, Lwt означает легкие нити, а Lwt легкие. У Lwt есть модель кооперативных потоков, только один поток lwt одновременно работает в одном системном потоке, пока он явно не даст управление. Ваша обязанность - убедиться, что ваши вычисления в конечном итоге приведут к выводу, иначе другие потоки lwt могут никогда не запуститься.

Однако у Lwt также есть пул системных потоков, используемых для выполнения блокирующих системных вызовов или для делегирования ваших долго выполняющихся функций, чтобы они не блокировали всю систему и не позволяли другим потокам lwt работать.

Вы можете узнать больше о модели и реализации Lwt в этой статье (которую вы можете найти на веб-странице оригинального автора здесь).

Другие вопросы по тегам