Junior
Мақсади калиди lock дар C# чист?
sobes.tech AI
Ҷавоб аз AI
Ключевата дума lock се използва за осигуряване на потокобезопасност чрез създаване на критична секция.
Основните й цели:
- Блокиране на достъпа: Гарантира, че само един поток може да изпълнява кода вътре в блока
lockв даден момент. - Защита на споделените ресурси: Предотвратява състезателни условия при едновременен достъп на няколко потока до данни или ресурси като полета на клас, колекции и др.
- Синхронизиране на потоците: Използва се за организиране на реда на изпълнение на операции в многонишкови сценарии.
Пример за използване:
private static readonly object _lockObject = new object(); // Обект за заключване
public void UpdateCounter()
{
// Начало на критичната секция
lock (_lockObject)
{
// Кодът вътре в този блок може да се изпълнява само от един поток едновременно
counter++;
}
// Край на критичната секция
}
Важно е да се използва специализиран обект (_lockObject в примера) за заключване, а не this или typeof(TypeName), за да се избегнат потенциални проблеми с взаимно блокиране. Препоръчва се използването на обекти от тип object или System.Threading.ReaderWriterLockSlim за по-сложни сценарии.