ограничение размеров почтового ящика scala

Random rand = new Random();

if (rand.Next(0, 2) == 0)
    lnkEvents.CssClass = "selected";
else
    lnkNews.CssClass = "selected";

Random.Next выбирает случайное целое число между нижней границей (включительно) и верхней границей (исключая).

15
задан tilish 19 October 2012 в 15:28
поделиться

2 ответа

Вы можете создать актера, который действует как буфер между производителем и потребителем. Буфер проверяет свой почтовый ящик на данные цикла. Он отправляет обратно производителю сообщение «перегрузка», когда количество буферизованных продуктов слишком велико; и отправляет «ясное» сообщение, когда все возвращается в порядок. В случае слишком большого количества сообщений он просто отбрасывает входящие (или самые старые).

Потребитель активно запрашивает продукты из буфера, который, в свою очередь, отправляет обратно один продукт. Если буфер пуст, потребитель продолжает ждать ввода.

Производитель отправляет продукты субъекту буфера. Если он получает сообщение «перегрузка», он может остановить производство или продолжить производство, зная о том, что продукты могут упасть.

16
ответ дан 1 December 2019 в 03:35
поделиться

Метод Actor.mailboxSize возвращает количество ожидающих сообщений в почтовом ящике Актера.

Это может использоваться для регулирования производителя различными способами.

Например, одна из возможностей может быть такой:

Производитель проверяет, не превышает ли mailboxSize потребителя некоторый порог. Если это так, он отправляет SpecialMessage потребителю и блокирует семафор. Когда потребитель получает это SpecialMessage , он освобождает семафор. Производитель теперь может весело продолжать свой бизнес.

Это позволяет избежать опроса, а также любых отброшенных сообщений.

5
ответ дан 1 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: