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