Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 17802|Ответ: 0

[Связь] Шлюз C #

[Скопировать ссылку]
Опубликовано 21.02.2019 9:43:39 | | |
1. Почему замок и что такое заблокировано?

Когда мы используем потоки, самый эффективный способ, конечно, асинхронен, то есть каждый поток работает одновременно, без зависимости друг от друга и ожидания. Однако, когда разным потокам необходимо получить доступ к определённому ресурсу, требуется механизм синхронизации, то есть при чтении и записи одного и того же ресурса нужно сделать так, чтобы ресурс управлялся только одним потоком одновременно, чтобы каждая операция была эффективной и немедленной, то есть чтобы обеспечить атомарность её работы. lock — самый часто используемый метод синхронизации на C#, в формате lock(objectA){codeB}.


lock(objectA){codeB} кажется простым, но на самом деле имеет три значения, что необходимо для правильного использования:
1. ОбъектA заблокирован? Если нет, я заблокирую его, иначе жду, пока объект А не будет освобождён.
2. После блокировки другие потоки не могут вызывать codeB или использовать objectA во время выполнения codeB.
3. После выполнения codeB объект A и codeB могут быть доступны другими потоками.

2. Что случилось с замком (этим)?

Рассмотрим пример:

В потоке t1 LockMe вызывает lock(this), то есть c1 в основной функции, и при вызове lock(c1) в основном потоке он должен дождаться выполнения блока блокировки в t1, прежде чем обращаться к c1, то есть все операции, связанные с c1, нельзя выполнить, поэтому мы видим, что даже c1. DoNotLockMe() не выполняется.





Предыдущий:C# в части массива ArraySegment
Следующий:Глубокая практика Spring Boot. Чэнь Шаоцзянь и SpringBoot раскрывают + быстро создают систему микросервисов
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com