Я видел разные фрагменты, демонстрирующие Put
сообщение, которое возвращает единицу
с MailboxProcessor
от F#. В некоторых из них используется только метод Post
, а в других - PostAndAsyncReply
, причем канал ответа немедленно отвечает, как только сообщение обрабатывается. При тестировании я обнаружил значительную задержку при ожидании ответа, так что, похоже, если вам не нужен реальный ответ, следует использовать Post
.
Примечание: Я начал задавать этот вопрос в другой теме, но решил, что полезно опубликовать его в виде полноценного вопроса. В другой теме Томаш Петричек упомянул, что канал ответа может быть использован как механизм ожидания, чтобы вызывающая сторона задержалась, пока сообщение Put
не будет обработано.
Помогает ли использование PostAndAsyncReply
в упорядочивании сообщений, или это просто принудительная пауза до обработки первого сообщения? С точки зрения производительности Post
кажется правильным решением. Так ли это?
Обновление:
Я только что придумал причину, по которой PostAndAsyncReply
может быть необходим в примере BlockingQueueAgent
: Scan
используется для поиска Get
сообщений, когда очередь заполнена, поэтому вы не хотите Put
, а затем Get
до завершения предыдущего Put
.