C# межраспараллеливают коммуникацию

Я хочу, чтобы сотрудничали два потока; производитель и потребитель. потребитель является довольно медленным, и производитель очень быстр и работает в пакетах.

например, потребитель может обработать одно сообщение в 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);
    }
}
5
задан AbdelAziz AbdelLatef 6 October 2019 в 03:26
поделиться