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

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

[Источник] C# выполняет безопасные операции обхода в многопоточной среде

[Скопировать ссылку]
Опубликовано 18.10.2016 13:55:48 | | |

В этой статье используется List в качестве объекта операции
MSDN официально предоставляет заявление о безопасности потока от List:
Такой тип публичного статичного члена является безопасным для потоков. Однако ни один экземпляр не может быть гарантировано безопасным для потоков.
Пока коллекция не изменяется, List может поддерживать несколько читателей одновременно. Перечисление через множество не является по своей сути процессом, безопасным для потоков. В редких случаях, когда перечисление конкурирует с одним или несколькими доступами для записи, единственный способ сохранить потоки в безопасности — это блокировать коллекцию на весь период перечисления. Чтобы несколько потоков могли получить доступ к коллекции для операций чтения и записи, необходимо реализовать собственную синхронизацию.
Если не синхронизироваться?
Если один поток выполняет операцию удаления, а поток — операцию обхода, то во время процесса обхода коллекция изменяется, что приведёт к появлению исключения InvalidOperationException, с подсказкой: коллекция была изменена; Операции перечисления не могут выполняться.
Как синхронизировать процесс для обеспечения безопасности перемещения
Критические зоны, мьютексы используются здесь для обеспечения процесса прохождения потока, пример кода выглядит следующим образом:






Предыдущий:Решение ошибки подписи jssdk официального аккаунта WeChat под названием China Unicom
Следующий:asp.net Глобальная обработка исключений MVC и журналы исключений
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com