Junior — Middle
Milyen szálak szinkronizációs mechanizmusait ismeri és tudja használni projektjeiben?
sobes.tech MI
Válasz az MI-től
C#-ban különböző mechanizmusokat használnak a szálak szinkronizálására:
- lock — egyszerű módja a kritikus szekció zárolásának.
- Mutex — interprocesszus zárolás, hasznos, ha különböző folyamatok közötti hozzáférést kell szinkronizálni.
- Semaphore és SemaphoreSlim — lehetővé teszik, hogy korlátozzák a párhuzamosan futó szálak számát egy adott kódrészleten.
- Monitor — rugalmasabb mechanizmus, amelyre a lock alapul.
- ManualResetEvent és AutoResetEvent — a szálak közötti jelzésekhez.
- Concurrent kollekciók a System.Collections.Concurrent névtérből — biztosítják a szálbiztos hozzáférést a kollekciókhoz.
Példa a lock használatára:
private readonly object _lockObj = new object();
public void IncrementCounter()
{
lock(_lockObj)
{
// Kritikus szekció
counter++;
}
}