Como usar um mutex
Eu tenho um thread, que está enviando dados armazenados em um buffer do tipo List <string> via tcp. Outro segmento está gravando no buffer. Como não estou familiarizado com c #, gostaria de saber como devo usar o bloqueio ou o Mutex corretament
Este é o código que eu gostaria de usar eventualmente:
while(buffer.isLocked())
{
buffer.wait();
}
buffer.lockBuffer();
buffer.add(tcpPacket);
buffer.unlockBuffer();
buffer.notify();
Este é o meu código atual. Espero que alguém possa me ajudar a concluí-lo.
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()
{
//...
}
}