У меня есть 2 вектора целых чисел. Иногда я хотел бы обменять два (подробности для чего ниже). Два варианта, которые я рассматриваю, - это использование функции свопинга или замена указателей. Я вижу, что своп работает в постоянное время и кажется более чистым.Использование swap против смены указателей на векторы
Подробнее об обмене: у меня есть несколько потоков, обращающихся к первому вектору. Иногда я хочу сделать несколько длинных вычислений на векторе. Я все еще хочу собирать данные из других потоков, поэтому я буду меняться в другом, чтобы другие потоки продолжали работать в течение этого времени.
Просто осознайте, что «вектор» представляет собой сложный объект и даже атомный swap (и функция 'swap' не является атомарной) не является достаточной синхронизацией, чтобы сделать ее пригодной для использования несколькими потоками. –
Я планирую использовать блокировку для защиты от проблем синхронизации. Похоже, что swap запускается в постоянное время и хочет знать, достаточно ли было бы использовать – jamesatha