Сообщение ревью multi-queue processor от 06.09.2019 12:10
Изменено 07.09.2019 6:21 Hydrophobia
ревью multi-queue processor
Доброго времени суток!
Решил тут попробывать себя в одну кипрскую контору, дали мне задание:
Необходимо сделать универсальный (библиотечный) обработчик нескольких очередей, позволяющий:
добавлять в очередь из нескольких продюсеров (из разных потоков)
подписаться/отписаться на разбор очереди в отдельном потоке одним фиксированным консьюмером (одна очередь — один консьюмер)
Общее требования к обработчику очередей:
потокобезопасный
эффективный, быстрый, масштабируемый
легко расширяемый (с точки зрения кода)
и набор интерфейсов. Ограничения — C++ и boost.
Я написал реализацию, но она их чем-то не удовлетворила (const мало, да лямбд не обнаружено, да аллокаций много). Моя реализация доступна по линку
https://www.dropbox.com/s/lfqbaxpnz58rmal/multiqueue-processor.zip?dl=1
Пожалуйста, прокоментируйте реализацию, архитектуру и пр. Очень интересно создать "продуктовое решение"
Решил тут попробывать себя в одну кипрскую контору, дали мне задание:
Необходимо сделать универсальный (библиотечный) обработчик нескольких очередей, позволяющий:
добавлять в очередь из нескольких продюсеров (из разных потоков)
подписаться/отписаться на разбор очереди в отдельном потоке одним фиксированным консьюмером (одна очередь — один консьюмер)
Общее требования к обработчику очередей:
потокобезопасный
эффективный, быстрый, масштабируемый
легко расширяемый (с точки зрения кода)
и набор интерфейсов. Ограничения — C++ и boost.
Я написал реализацию, но она их чем-то не удовлетворила (const мало, да лямбд не обнаружено, да аллокаций много). Моя реализация доступна по линку
https://www.dropbox.com/s/lfqbaxpnz58rmal/multiqueue-processor.zip?dl=1
Пожалуйста, прокоментируйте реализацию, архитектуру и пр. Очень интересно создать "продуктовое решение"
ревью multi-queue processor
Доброго времени суток!
Решил тут попробывать себя в одну кипрскую контору, дали мне задание:
Необходимо сделать универсальный (библиотечный) обработчик нескольких очередей, позволяющий:
добавлять в очередь из нескольких продюсеров (из разных потоков)
подписаться/отписаться на разбор очереди в отдельном потоке одним фиксированным консьюмером (одна очередь — один консьюмер)
Общее требования к обработчику очередей:
потокобезопасный
эффективный, быстрый, масштабируемый
легко расширяемый (с точки зрения кода)
и набор интерфейсов с "неправильной" реализацией:
Ограничения — C++ и boost.
Я написал реализацию, но она их чем-то не удовлетворила (const мало, да лямбд не обнаружено, да аллокаций много). Моя реализация доступна по линку
https://www.dropbox.com/s/lfqbaxpnz58rmal/multiqueue-processor.zip?dl=1
Пожалуйста, прокоментируйте реализацию, архитектуру и пр. Очень интересно создать "продуктовое решение"
Update1: Добавил интерфейсы
Решил тут попробывать себя в одну кипрскую контору, дали мне задание:
Необходимо сделать универсальный (библиотечный) обработчик нескольких очередей, позволяющий:
добавлять в очередь из нескольких продюсеров (из разных потоков)
подписаться/отписаться на разбор очереди в отдельном потоке одним фиксированным консьюмером (одна очередь — один консьюмер)
Общее требования к обработчику очередей:
потокобезопасный
эффективный, быстрый, масштабируемый
легко расширяемый (с точки зрения кода)
и набор интерфейсов с "неправильной" реализацией:
пример предоставленного кода | |
| |
Ограничения — C++ и boost.
Я написал реализацию, но она их чем-то не удовлетворила (const мало, да лямбд не обнаружено, да аллокаций много). Моя реализация доступна по линку
https://www.dropbox.com/s/lfqbaxpnz58rmal/multiqueue-processor.zip?dl=1
Пожалуйста, прокоментируйте реализацию, архитектуру и пр. Очень интересно создать "продуктовое решение"
Update1: Добавил интерфейсы