Есть сишный метод который отдает массив структур (примерно 6000 за раз по ~1кб каждая), жаба его в несколько потоков дергает. в итоге в жабу должно приходить примерно 3 Гбита данных с си++. Почему приходит меньше 1 гбита. Изменение количества потоков в жабе не дает улучшение, так же как и изменение размера пачки в си++, очередь продолжает расти примерно с одной и той же скоростью. Складывается впечатление что просто не хватает пропускной способности
for (int i = 0; i < 6; i++) {
new Thread(() -> {
while (true) {
StructContainer container = cLib.get();
if (container == null || container.size <= 0) {
continue;
}
}
}).start();
struct PacketArray getPacket() {
struct PacketArray packetArray;
if (!queue.try_dequeue(packetArray)) {
packetArray.size = 0;
}
return packetArray;
}
на стороне си++ используется moodycamel::ConcurrentQueue.