- nike air max 90 pas cher,nike air max 90 pas cher
- 16373
|
Требования: Поскольку аппаратные ресурсы ограничены, работа программы должна потреблять определенные аппаратные ресурсы, в случае высокого параллелизма, если программа некоторые из методов, которые занимают слишком много ресурсов не ограничены (будет большой объем данных, экспортируемых в таблицы Excel), может повлиять на всю программу не может обеспечить нормальное обслуживание, но и влияет на нормальную работу операционной системы, эта статья использует SemaphoreSlim сигнал количество для ограничения одновременных вызовов. В этой статье используются сигналы SemaphoreSlim для ограничения количества одновременных вызовов .
Разница между Semaphore и SemaphoreSlim
SemaphoreSlim и Semaphore функционально похожи, SemaphoreSlim примерно в 4 раза быстрее Semaphore, но SemaphoreSlim не может быть использован для межпроцессной сигнализации.
Причина такого повышения производительности заключается в том, что класс SemaphoreSlim предоставляет облегченную альтернативу классу Semaphore, которая не использует сигналы ядра Windows. По сути, если вам не нужны именованные сигналы, используйте класс SemaphoreSlim.
SemaphoreSlim основан на SpinWait и Monitor, поэтому поток, ожидающий получения блокировки, расходует определенное количество циклов процессора в надежде получить блокировку до того, как уступит место другому потоку. Если этого не происходит, то поток позволяет системе переключить контекст и пытается снова (затрачивая некоторое количество циклов ЦП), когда ОС снова назначает поток. Этот паттерн может потреблять много циклов ЦП, если время ожидания велико. Поэтому наилучшим сценарием для этой реализации является то, что большую часть времени ожидания нет, и вы можете получить блокировку почти сразу. Semaphore полагается на реализацию в ядре ОС, поэтому каждый раз, когда вы получаете блокировку, тратится значительное количество циклов CPU, но после этого поток просто уходит в спячку на время, необходимое для получения блокировки.
Документация по семафорам: https: //docs.microsoft.com/en-us ... aphore?view=net-6.0 Документация по SemaphoreSlim: https: //docs.microsoft.com/en-us ... reslim?view=net-6.0
Прежде чем приступить к выполнению метода, приведем следующие часто используемые методы ожидания, которые следует вызывать в соответствии с реальной ситуацией в вашем бизнесе!
Wait(): блокирует поток до тех пор, пока он не получит доступ к семафоруSlim. Wait(0): метод не блокирует поток. Он проверит состояние хэндла ожидания и немедленно вернется. Wait(positive integer): блокирует текущий поток до тех пор, пока он не сможет войти в SemaphoreSlim, и использует 32-битное знаковое целое число для задания таймаута.
Исходный код выглядит следующим образом:
Рендеринг выглядит следующим образом:
|
Предыдущая: Linux беспарольный вход (ssh) или беспарольное копирование (scp) файлов на другие серверыNext: [Практика]Linux использование lookbusy моделирование заполненности процессора
|