В ежедневната разработка можем да използваме опашки, които са структура за съхранение, която може да постигне "първи влязъл, първи излез".
Сценарии за кандидатстване: писане на логове, изпращане на имейли и т.н.
Ако трябва да записваме интерфейсния лог на всеки потребител, който иска нашите данни, не е нужно да пишем лог всеки път, когато потребителят го поиска, можем да сложим съдържанието на логовете в опашката и да оставим другите нишки да го изпълняват, за да не влияем на ефективността на приложението.
Друго предимство е, че добавянето на данни към опашката при конкурентност, използването на една нишка за изпълнение на данните от опашката може да избегне много изключения, ако достъпът до същия физически файл при конкурентност (многонишков) ще причини изключения. (в зависимост от наличността)
Универсален подход на опашките:
Това е абстрактен клас и трябва да го наследиш и да реализираш метода Execute абстракция. Тъй като не знам какъв тип данни искате да обработвате, тук се използват генерични данни, тоест Entity е от тип низ, параметрите на метода са от типа низ, а данните, които обработвате, са от тип низ.
Опашката ConcurrentQueue, безопасна за нишки, гарантира, че няма да има изключения в многонишкова среда.
ManualResetEvent за контрол на сигнала на нишката,В миналото проверявахме опашката за данни на всеки няколко секунди или минутиСега добавяме данните в опашката и остава само да предадем сигнал!
Използване:
(Край)
|