Потоковая очередь C/C++, оптимизированная для push
Я ищу поточно-ориентированную реализацию очереди C/C++, оптимизированную для операции push. Я не против, если блокирует поп-операцию, но я бы никогда не хотел блокировать на стороне толчка.
Позвольте мне объяснить, почему. Я планирую написать профилировщик для приложения на C#, и у меня будет несколько потоков, помещающих сообщения в один поток диспетчера. Я не против, если диспетчер блокирует в ближайшее время, но я хотел бы избежать любой задержки на стороне толчка.
1 ответ
Вы можете использовать boost.lockfree. Он находится в улучшенной песочнице SVN и планируется выпустить с Boost для версии 1.53 или 1.54 в зависимости от того, будет ли Boost.atomic выпущен вовремя. На данный момент boost.lockfree зависит от std::atomic, а не boost.atomic, поэтому вам нужен компилятор c+11 для его использования.