У меня есть проблема, и, похоже, я не могу ее решить.
У меня есть два вектора векторов, в которых я храню данные.Но я также использую потоки для ускорения обновления значений (размер неизменен, просто если число меньше оригинала, которое он переписывает в него).
Но потоки неправильны без атомарности.
Можете ли вы помочь мне в том, что мне делать?
Должен ли я использовать просто std :: atomic_int Если так, то как мне использовать функции загрузки и сохранения или, может быть,что-то другое?Я передаю свои векторы в поток, как в .h:
void for_thread_function(std::vector<std::vector<int>> * DATA1,td::vector<std::vector<int>> * DATA2 /*other params*/)
в .cpp:
std::thread thread (&MY_PROBLEM::for_thread_function, this, &DATA1, &DATA2, /*other params*/);
Должен ли я использовать mutex-es?Тогда какой, и снова, как использовать его на двух источниках данных?Или вы можете привести небольшой пример: я вообще не использовал немцы (?).
Должен ли я использовать комбинацию первых двух?И как ??
Другое
Не могли бы вы объяснить, почему является лучшим вариантом ?
Спасибо за вашу помощь. Я действительно заблудился в лесу об этом материале.
РЕДАКТИРОВАТЬ: Я использую потоки для вычисления BFS из другой начальной точки.Поэтому мне нужно пройти всю матрицу.У меня есть относительно большие наборы данных (одна таблица с ценой, а другая - с которой отправная точка является ближайшей вершиной)