У меня есть один поток, который отправляет данные, хранящиеся в буфере типа List через tcp.Другой поток пишет в буфер.Поскольку я не очень знаком с c #, я хотел бы знать, как правильно использовать lock или Mutex.
Это код, который я хотел бы использовать в конечном итоге:
while(buffer.isLocked())
{
buffer.wait();
}
buffer.lockBuffer();
buffer.add(tcpPacket);
buffer.unlockBuffer();
buffer.notify();
Это мой текущий код.Я надеюсь, что кто-то может помочь мне завершить это.
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()
{
//...
}
}