порядок поступления сообщения на почтовый ящик процессора - PullRequest
1 голос
/ 02 апреля 2012

Есть ли / Как я могу получить гарантию на порядок прибытия для сообщений, отправленных на почтовый ящик обработчика

То есть, в потоке, если я

agent.post(msg1)
agent.post(msg2)

Как ябыть уверенным, что в цикле обработки для агента сообщения будут приниматься по порядку?

Ответы [ 2 ]

3 голосов
/ 02 апреля 2012

Они есть.Реализация Post, как вы можете догадаться, просто добавляет элемент в очередь (в текущем потоке под блокировкой) и отправляет сообщения, чтобы уведомить любого ожидающего агента, чтобы он проснулся и обработал его.Поэтому, если вы вызываете Post дважды в одном и том же потоке, одно за другим, сообщения попадают в очередь в указанном порядке.

0 голосов
/ 02 апреля 2012

Вы также можете использовать inbox.Scan(function _ -> None // return an Option), чтобы найти сообщения, если у вас есть какой-то способ определения порядка. Конечно, это приводит к снижению производительности, поэтому лучше оставить очередь в покое.

...