Middle
Šta su lock-eri u C#?
sobes.tech АИ
Одговор од АИ
lock у C# се користи за обезбеђивање ексклузивног приступа блоку кода. Он гарантује да само један ток може истовремено извршавати тај блок, спречавајући услове трка (race conditions) при раду са заједничким ресурсима.
private static readonly object _lockObject = new object(); // Објекат за синхронизацију
public void AccessSharedResource()
{
lock (_lockObject) // Закључавање објекта
{
// Критична секција: код који захтева ексклузивни приступ
// Рад са заједничким ресурсом (нпр. промена променљиве)
} // Закључак се аутоматски ослобађа при изласку из блока
}
Альтернативе и сродни концепти:
Monitor: Обезбеђује финију контролу над синхронизацијом, укључујући методе Wait, Pulse, PulseAll.Mutex: Користи се за синхронизацију између процеса, као и између тока унутар истог процеса.Semaphore/SemaphoreSlim: Ограничава број тока који могу истовремено приступити ресурсу.ReaderWriterLockSlim: Омогућава више токова да читају истовремено, али само један да пише.
Избор механизма закључавања зависи од конкретног задатка синхронизације. lock је скраћени облик коришћења Monitor.Enter и Monitor.Exit и погодан је за већину једноставних случајева синхронизације унутар истог процеса.