Практическое руководство. Координирование нескольких потоков выполнения
Чтобы многопоточные компоненты можно было безопасно использовать в потоках, необходимо согласовать доступ к общим ресурсам. Если несколько потоков одновременно пытаются получить доступ к общему ресурсу, может возникнуть состояние гонки, что вызывает повреждение данных. Состояние гоики можно избежать, используя блокировки. Подробные сведения о потокобезопасности и состояний гонки см. в разделе Потокобезопасные компоненты.
Чтобы создать блокировку для объекта, выполните следующие действия.
Определите код, который должен выполняться неделимым блоком, и объект, для которого он должен выполняться. Подробные сведения см. в разделе Потокобезопасные компоненты.
Установите блокировку для этого объекта и включите код в состав блокируемого фрагмента.
Этот код теперь будет выполняться для заблокированного объекта неделимым блоком.
SyncLock MyObject ' This represents the start of the lock on MyObject. ' Insert code to be executed atomically on MyObject here. End SyncLock ' This represents the end of the lock.
lock (MyObject) // All code inside the braces {} is executed with MyObject locked. { // Insert code to be executed atomically on MyObject here. }
См. также
Задачи
Пошаговое руководство. Разработка простого многопоточного компонента с использованием Visual Basic
Пошаговое руководство. Разработка простого многопоточного компонента с помощью Visual C#
Ссылки
Основные понятия
Обзор асинхронной модели, основанной на событиях