Middle
Mis on lock-ers C#-s?
sobes.tech AI
Vastus AI-lt
C#-s kasutatakse lock, et tagada eksklusiivne juurdepääs koodiplokile. See tagab, et ainult üks voog saab seda plokki samaaegselt täita, vältides võistlusolukordi (race conditions) jagatud ressurssidega töötades.
private static readonly object _lockObject = new object(); // Sünkroniseerimise objekt
public void AccessSharedResource()
{
lock (_lockObject) // Objekti lukustamine
{
// Kriitiline sektsioon: kood, mis nõuab eksklusiivset juurdepääsu
// Töö jagatud ressursiga (nt muutuja muutmine)
} // Lukustus vabastatakse automaatselt väljudes plokist
}
Alternatiivid ja seotud mõisted:
Monitor: Pakub detailsemat kontrolli sünkroniseerimise üle, sh meetodid Wait, Pulse, PulseAll.Mutex: Kasutatakse protsesside vahel ja ka ühe protsessi lõimede vahel sünkroniseerimiseks.Semaphore/SemaphoreSlim: Piirab lõimede arvu, mis saavad samaaegselt ressursile ligi.ReaderWriterLockSlim: Lubab mitmel lõimel samaaegselt lugeda, kuid ainult ühel kirjutada.
Sünkroniseerimismehhanismi valik sõltub konkreetsest ülesandest. lock on lühend vorm Monitor.Enter ja Monitor.Exit kasutamisest ning sobib enamike lihtsate juhtumite jaoks ühe protsessi sees.