- nike air jordan pas cher,nike air jordan pas cher
- 16373
|
Я уже писал простой класс-помощник для ведения журнала, скопированный из другого фреймворка, и тест не работает, как показано ниже:
c# Простейший способ записи логов h ttps:// www.itsvse.com/thread-5111-1-1.html Эта статья основана на повторной реализации класса простого журнала записи BlockingCollection.
Потокобезопасная коллекция (collation) в .net/c# h ttps:// www.itsvse.com/thread-3769-1-1.html BlockingCollection<T> - это класс потокобезопасной коллекции, который обеспечивает следующую функциональность:
Реализация паттерна "создатель-пользователь". Добавление и получение элементов одновременно в нескольких потоках. Необязательная максимальная емкость. Блокировка операций вставки и удаления, когда коллекция пуста или переполнена. Операции вставки и удаления "try" без блокировки или в течение определенного периода времени. Обертывает любой тип коллекции, реализующий IProducerConsumerCollection<T>. Выполняет операции отмены с помощью флага cancel. Поддерживает два типа перечислений с помощью foreach (в Visual Basic - For Each): перечисления только для чтения. Перечисления, которые удаляют элементы при их перечислении.
Введение Microsoft: https: //docs.microsoft.com/zh-cn/dotnet/standard/collections/thread-safe/blockingcollection-overview
BlockingCollection - это потокобезопасная блокирующая очередь. Используя функцию блокировки, мы можем реализовать внутрипроцессную модель производитель-потребитель, например пересылку сообщений, ведение журнала и т. д. Вызовите метод Add, чтобы добавить сообщение в очередь.
Когда в очереди нет сообщений, IsCompleted будет продолжать блокировать цикл while, чтобы не привести к мертвому циклу. Когда появится новое сообщение, IsCompleted внутри while сработает и вернет тип bool, что приведет к продолжению выполнения, т. е. получению данных внутри потока.
Ранее мы заблокировали поток, вызвав метод WaitOne события ManualResetEvent, и вызвали методы Reset и Set для передачи сигнала, как показано ниже:
c# обертывает универсальную очередь QueueHelper h ttps:// www.itsvse.com/thread-5029-1-1.html
Тест на запись 10 000 журналов занял менее 10 миллисекунд, как показано ниже:
Код выглядит следующим образом:
Скачать исходный код:
Гость, если вы хотите просмотреть скрытое содержимое этого сообщения, пожалуйста, ответьте на |
Предыдущая: предупреждение: LF будет заменен на CRLF в xxxx.Следующая:Оптимизация запросов в Entity Framework WITH(NOLOCK)
|