Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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