Скажем, multiple producers / single consumer? BlockingCollection это нормально?
Потребитель - это один поток, который каким-то образом получает сообщения из разных источников и обрабатывает их один за другим в цикле
есть синхронный способ передачи, есть асинхронный способ передачи. Через блокинг коллекшн и иже с ними - это асинхронный способ Через каналы - синхронный
Я хочу, чтобы производитель вызвал условный Send, который бы почти немедленно закончился, и пошёл по своим делам дальше. Сообщения сидят в очереди, пока у потребителя не дойдут до них руки
функциональные требования какие? латентность? пропускная способность? минимизация потребления CPU ?
Приоритет на низкую латентность прохода сообщений через систему. Следующий - пропускная способность, но это вторично, так как теоретически можно разбить на параллельные отдельные процессы
Ну тогда Disruptor с правильной стратегией ожидания без вариантов, из публичных либ он лучший в этом аспекте
Но тебе действительно нужна издержка не больше 50ns на передачу данных между потоками ? :) Disruptor к вопросам латентности подходит бескомпромиссно
Я бы взял 0 наносекунд, если бы кто-то давал. Чем быстрее, тем лучше. Время - деньги, как говорится!
HFT что-ли? :)))
BufferBlock как вариант
В чем преимущество?
Он быстрее чем мейлбокс
Обсуждают сегодня