Cómo usar un mutex
Tengo un hilo, que está enviando datos almacenados en un búfer de tipo Lista <cadena> a través de tcp. Otro hilo está escribiendo en el búfer. Como no estoy muy familiarizado con c #, me gustaría saber cómo debo usar lock o Mutex correctamente.
Este es el código que me gustaría usar eventualmente:
while(buffer.isLocked())
{
buffer.wait();
}
buffer.lockBuffer();
buffer.add(tcpPacket);
buffer.unlockBuffer();
buffer.notify();
Este es mi código actual. Espero que alguien pueda ayudarme a completarlo.
public class Buffer
{
private Mutex mutex;
private List<string> buffer;
private bool locked = false;
public Buffer()
{
mutex = new Mutex(false);
buffer = new List<string>();
}
public bool isLocked()
{
return locked;
}
public void lockBuffer()
{
if (!locked)
{
//...
locked = true;
}
}
public void unlockBuffer()
{
if(locked)
{
mutex.ReleaseMutex();
locked = false;
}
}
public void wait()
{
mutex.WaitOne();
}
public void notify()
{
//...
}
}