Futures
FSharp.Control.Futures это экспериментальная F# библиотека асинхронного программирования, вдохновленная Rust трейтом Future.
Концептуально Future являются таким же примитивом асинхронного программирования как C# Task или F# Async, поэтому если вы знакомы с ними, начать работать с Future'ами должно быть максимально просто.
Особенности дизайна Future
- Future является "холодной" (вычисление начинается только после явного запуска).
- Возможность отмеы без явной передачи CancellationToken.
- Всегда явные точки прерывания.
- Отсутствие блокировок в базовых комбинаторах.
- Не требует выделения памяти под обратные вызовы, только выделения самих Future.
Сравнение Task, Async, Future
Task | Async | Future | |
---|---|---|---|
Тип | Горячие | Холодные | Холодные |
Отмена | Явный CancellationToken | Неявный CancellationToken | Вызов метода отмены |
Хвостовая рекурсия | Нет | Да | Да |