Если вы хотите использовать стандартную очередь, но без блокировки, ищите реализацию очереди без блокировки.В C ++ нет стандартной очереди без блокировки. 11.
Вместо одной очереди, почему бы не использовать вектор задач на ядро / поток и циклически переключаться между ними?Например, если у вас есть 4 процессора и потока, для каждого из них есть вектор задач.Распределите задачи поровну между ними, а затем просто итерируйте их, как вы упомянули в циклическом комментарии в последнем предложении.Это не имело бы блокировки и имело бы такие же гарантии порядка обработки (то есть ни одного), как у очереди из нескольких потоков.