架构师_程序员_码农网

Имя пользователя Получить пароль
Регистрация

QQ登录

Всего один шаг, чтобы начать

Поиск
Просмотров:7305|Ответов: 2
打印 上一主题 下一主题

[NET/C# Использование SemaphoreSlim для ограничения одновременного выполнения

[NET/C# Использование SemaphoreSlim для ограничения одновременного выполнения].
NB: Я не знаю, что сказать.
Поднимайте прямо к 跳转到指定楼层
владелец
发表于 2022-2-19 21:23:20|只看该作者回帖奖励|Реверсивныйпросмотр|Режим чтения
Требования: Поскольку аппаратные ресурсы ограничены, работа программы должна потреблять определенные аппаратные ресурсы, в случае высокого параллелизма, если программа некоторые из методов, которые занимают слишком много ресурсов не ограничены (будет большой объем данных, экспортируемых в таблицы 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 моделирование заполненности процессора
Код фермерской сети, публикуется только в процессе практики, столкнувшись с техническими трудностями, не вводите в заблуждение других.
Диван
Posted on 2022-2-19 23:16:57|Only View Author
Я не уверен, смогу ли я это сделать, но я уверен, что смогу.
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
скамейка
发表于 2022-2-20 22:19:24|只看该作者
тест
Код фермерской сети, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Вы должны войти в систему, прежде чем сможете отправлять сообщения назад Войти | Зарегистрироваться

Эта версия интегральных правил


Отказ от ответственности: все программное обеспечение, материалы по программированию или статьи, выпущенные сетью Code Farmers, ограничены учебными и исследовательскими целями; не должны использоваться в коммерческих или незаконных целях, в противном случае, все последствия, пожалуйста, пользователь несет ответственность. Это сайт информации из сети, авторские права спор не имеет никакого отношения к этому сайту. Вы должны полностью удалить вышеуказанное содержимое со своего компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купить регистрацию и получить лучше подлинного обслуживания. Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами по электронной почте, чтобы разобраться с этим.

Почта To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 04:15

Быстрый ответНазад к началуНазад к списку