Я пытаюсь узнать, как async
и let!
работают в F #.
Все прочитанные документы выглядят запутанными.
Какой смысл запускать асинхронный блок с Async.RunSynchronously? Является ли это асинхронным или синхронизирующим? Похоже на противоречие.
В документации указано, что Async.StartImmediate работает в текущем потоке. Если он работает в одном потоке, он не выглядит очень асинхронным для меня... Или, может быть, асинхронные выражения скорее похожи на сопрограммы, а не потоки. Если да, когда они возвращают четвертый?
Цитата MS docs:
Строка кода, использующая let! запускает вычисление, а затем поток приостанавливается пока результат не будет доступен, после чего выполнение продолжается.
Если поток ожидает результата, зачем его использовать? Похоже на старый вызов функции.
А что делает Async.Parallel? Он получает последовательность Async < T. Почему не выполняется параллельная последовательность простых функций?
Я думаю, что мне не хватает чего-то очень элементарного здесь. Думаю, после того, как я пойму, все документы и образцы начнут иметь смысл.