Я занимаюсь задачей прослушивания веб-сервиса. Который отправит xml-данные через push-службу. Данные должны пройти некоторый расчет, а затем отобразиться.Очередь с блокировкой против Lock Free Queue
Я планировал использовать очередь для хранения данных службой прослушивания и считывать данные по коду бизнес-логики. Это чистая одиночная очередь одного производителя.
Поскольку я должен получать данные в виде нажатия на веб-службу, я должен всегда открывать, чтобы получать данные и вставлять их в очередь. Я думал об использовании boost_lockfree_spsc_queue
. Поскольку, если это была блокируемая очередь, слушатель должен был ждать некоторое время, чтобы получить блокировку, в отличие от него boost_lockfree_spsc_queue
не нуждается в каких-либо замках.
Данные, которые я буду хранить это
struct MemoryStruct {
char *memory;
size_t size;
};
И очередь
boost::lockfree::spsc_queue<MemoryStruct*> lockFreeQ{100};
После прочтения раздела производительности здесь я немного запутался.
Безопасно использовать этот boost_lockfree_spcc_queue для производственных целей. Или я должен использовать стандартную очередь (C++ 11) с блокировками?
Thanks
Да, это безопасно для производственных целей - если вы соблюдаете требования к использованию. Какой раздел вас смутил? – sehe
Вы используете этот 'MemoryStruct', но беспокоитесь, что' boost' испортит вашу программу? – nwp
Есть ли что-то не так с использованием MemoryStruct? – Kid