我希望有两个线程协作,一个是生产者,一个是消费者。 消费者比较慢,而生产者非常快速并会突发性地工作。
例如,消费者可以每20秒处理一条消息,而生产者可以在一秒内生产10条消息,但只会偶尔这样做,以便让消费者跟得上。
我希望实现如下功能:
Stream commonStream;
AutoResetEvent commonLock;
void Producer()
{
while (true)
{
magic.BlockUntilMagicAvalible();
byte[] buffer = magic.Produce();
commonStream.Write(buffer);
commonLock.Set();
}
}
void Consumer()
{
while(true)
{
commonLock.WaitOne();
MagicalObject o = binarySerializer.Deserialize(commonStream);
DoSomething(o);
}
}