Junior — Middle
Ar galite išvardyti pagrindines sinchronizacijos primitivas, kurias teikia standartinė biblioteka?
sobes.tech AI
Atsakymas iš AI
C# standartinėje bibliotekoje (namespace System.Threading) yra prieinami šie pagrindiniai sinchronizacijos primitivi:
- lock (Monitor) — užtikrina išskirtinį prieigą prie ištekliaus, blokuodamas kodo dalį.
- Mutex — tarpprocesinis mutex, naudojamas tarpprocesinei sinchronizacijai.
- Semaphore ir SemaphoreSlim — riboja vienu metu prie ištekliaus prieinančių sriegių skaičių.
- AutoResetEvent ir ManualResetEvent — įvykiai signalizacijai tarp sriegių.
- ReaderWriterLockSlim — leidžia keliems sriegiams vienu metu skaityti išteklių, bet blokuoja rašymą.
- SpinLock — lengvas primitivas trumpiems užraktams be konteksto keitimo.
Pavyzdys, kaip naudoti lock:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// kodas, kuris turi būti vykdomas tik vieno srauto vienu metu
}
}