Использовать Post или PostAndAsyncReply с F#'s MailboxProcessor?

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

Примечание: Я начал задавать этот вопрос в другой теме, но решил, что полезно опубликовать его в виде полноценного вопроса. В другой теме Томаш Петричек упомянул, что канал ответа может быть использован как механизм ожидания, чтобы вызывающая сторона задержалась, пока сообщение Put не будет обработано.

Помогает ли использование PostAndAsyncReply в упорядочивании сообщений, или это просто принудительная пауза до обработки первого сообщения? С точки зрения производительности Post кажется правильным решением. Так ли это?

Обновление:

Я только что придумал причину, по которой PostAndAsyncReply может быть необходим в примере BlockingQueueAgent: Scan используется для поиска Get сообщений, когда очередь заполнена, поэтому вы не хотите Put, а затем Get до завершения предыдущего Put.

5
задан Community 23 May 2017 в 11:59
поделиться