Sobes.tech
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
    }
}