Junior — Middle
¿Puedes enumerar los principales primitivas de sincronización proporcionadas por la biblioteca estándar?
sobes.tech AI
Respuesta de la IA
En la biblioteca estándar de C# (en el espacio de nombres System.Threading) están disponibles los siguientes primitivas de sincronización principales:
- lock (Monitor) — proporciona acceso exclusivo a un recurso, bloqueando un bloque de código.
- Mutex — un mutex entre procesos, se usa para sincronización entre procesos.
- Semaphore y SemaphoreSlim — limitan la cantidad de hilos que acceden simultáneamente a un recurso.
- AutoResetEvent y ManualResetEvent — eventos para señalización entre hilos.
- ReaderWriterLockSlim — permite que varios hilos lean un recurso simultáneamente, pero bloquea la escritura.
- SpinLock — una primitiva ligera para bloqueos cortos sin cambio de contexto.
Ejemplo de uso de lock:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// código que debe ejecutarse solo con un hilo a la vez
}
}