Я хочу, чтобы сотрудничали два потока; производитель и потребитель. потребитель является довольно медленным, и производитель очень быстр и работает в пакетах.
например, потребитель может обработать одно сообщение в 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);
}
}