Очередь потребителей-производителей C ++ с (очень) быстрой и надежной передачей обслуживания

Привет, я ищу возможность передачи потоков с использованием быстрой и надежной очереди потребителей-производителей. Я работаю в Windows с VC ++.

Я основывал свой дизайн на очереди Anthony Williams , то есть, по сути, boost :: mutex с boost :: condition_variable. Теперь обычно время между notify_one () и пробуждением варьируется от 10 (редко) до 100 микросекунд, при этом большинство значений находится в районе 50 микросекунд. Однако примерно 1 из 1000 превышает одну миллисекунду, а для некоторых требуется больше 5 миллисекунд.

Мне просто интересно, являются ли это типичными значениями? Есть ли более быстрый способ подачи сигнала о вращении? Отсюда все сводится к управлению приоритетами потоков? Я не начал играть с приоритетами, но мне просто интересно, есть ли шанс получить это в довольно стабильной области около 10 микросекунд?

Спасибо

РЕДАКТИРОВАТЬ: с помощью SetPriorityClass (GetCurrentProcess (), REALTIME_PRIORITY_CLASS) , среднее время пробуждения по-прежнему составляет примерно 50 микрон, однако выбросов намного меньше, большинство из них сейчас составляет около 150-200 микрон. За исключением одного необычного выброса на 7 мс. Хммм ... не хорошо.

11
задан reuben 5 July 2012 в 08:04
поделиться