Random rand = new Random(); if (rand.Next(0, 2) == 0) lnkEvents.CssClass = "selected"; else lnkNews.CssClass = "selected";
Random.Next выбирает случайное целое число между нижней границей (включительно) и верхней границей (исключая).
Вы можете создать актера, который действует как буфер между производителем и потребителем. Буфер проверяет свой почтовый ящик на данные цикла. Он отправляет обратно производителю сообщение «перегрузка», когда количество буферизованных продуктов слишком велико; и отправляет «ясное» сообщение, когда все возвращается в порядок. В случае слишком большого количества сообщений он просто отбрасывает входящие (или самые старые).
Потребитель активно запрашивает продукты из буфера, который, в свою очередь, отправляет обратно один продукт. Если буфер пуст, потребитель продолжает ждать ввода.
Производитель отправляет продукты субъекту буфера. Если он получает сообщение «перегрузка», он может остановить производство или продолжить производство, зная о том, что продукты могут упасть.
Метод Actor.mailboxSize
возвращает количество ожидающих сообщений в почтовом ящике Актера.
Это может использоваться для регулирования производителя различными способами.
Например, одна из возможностей может быть такой:
Производитель проверяет, не превышает ли mailboxSize
потребителя некоторый порог. Если это так, он отправляет SpecialMessage
потребителю и блокирует семафор. Когда потребитель получает это SpecialMessage
, он освобождает семафор. Производитель теперь может весело продолжать свой бизнес.
Это позволяет избежать опроса, а также любых отброшенных сообщений.