Middle
Kas ir lock-eri C#?
sobes.tech AI
Atbilde no AI
C# valodā lock tiek izmantots, lai nodrošinātu ekskluzīvu piekļuvi koda blokam. Tas garantē, ka tikai viens pavedienis var vienlaikus izpildīt šo bloku, novēršot sacensību apstākļus (race conditions) strādājot ar koplietotiem resursiem.
private static readonly object _lockObject = new object(); // Sinhronizācijas objekts
public void AccessSharedResource()
{
lock (_lockObject) // Objekta bloķēšana
{
// Kritiskā sadaļa: kods, kas prasa ekskluzīvu piekļuvi
// Darbs ar koplietotu resursu (piemēram, mainot mainīgo)
} // Bloķēšana automātiski tiek atbrīvota, iznākot no bloka
}
Alternatīvas un saistītie jēdzieni:
Monitor: Nodrošina smalkāku kontroli pār sinhronizāciju, ieskaitot metodes Wait, Pulse, PulseAll.Mutex: Izmanto starpprocesu un arī viena procesa pavedienu sinhronizācijai.Semaphore/SemaphoreSlim: Ierobežo pavedienu skaitu, kas vienlaikus var piekļūt resursam.ReaderWriterLockSlim: Atļauj vairākiem pavedieniem lasīt vienlaikus, bet tikai vienam rakstīt.
Lēmuma par sinhronizācijas mehānisma izvēli ietekmē konkrētais uzdevums. lock ir īsāka Monitor.Enter un Monitor.Exit izmantošana un ir piemērota lielākajai daļai vienkāršu sinhronizācijas gadījumu vienā procesā.