Удаление из очереди нескольких потребителей в рамках DPDK

#dpdk

#dpdk

Вопрос:

Возможно ли реализовать кольцевой буфер в DPDK, в котором один объект, поставленный в очередь одним производителем, может быть удален из очереди несколькими потребителями (скажем, 4 потребителями)?. т. е. .. Является ли объект, удаляемый из очереди 1-м потребителем в кольцевом буфере, доступным для других потребителей?

Ответ №1:

Кольца DPDK — это просто указатели на буферы, операции постановки в очередь / удаления из очереди довольно дешевы. Итак, лучшее решение, которое приходит на ум, — создать 4 очереди и поставить один и тот же объект в очередь 4 раза в 4 разных очереди.

Могут возникнуть проблемы с освобождением этого объекта. Взгляните на счетчик ссылок mbuf.

И могут возникнуть проблемы с одновременным изменением объекта. Взгляните на блокировки или другие механизмы синхронизации.