С небольшим улучшением спецификации это становится довольно простым. Если у вас есть n
потоков, каждый из которых создает m
результатов, просто создайте свой вектор с n*m
элементами, и каждый поток скопирует свои результаты в соответствующий поддиапазон. Таким образом, поток j
копирует свои результаты в results[j*m]
через results[j*m + m - 1]
. Синхронизация не требуется, поскольку ни один из потоков не изменяет одновременно один и тот же элемент.
В целом, если вы заранее знаете, сколько результатов создаст каждый поток, вы можете соответствующим образом расположить вектор результатов так, чтобы их не было. конфликтующие записи.