Я читаю CSV-файл, используя несколько потоков. Каждый поток читает часть CSV-файла, например. thread1 читается от line:214
до line:359
.Получить данные элемента из потока
CSVReader reader1("C:\\file.csv", 214, 359);
В процессе чтения поля данных хранятся в векторе.
data[i].push_back(data_field);
В основной функции, коды, как показано ниже:
CSVReader reader1("C:\\file.csv", 214, 359);
CSVReader reader2("C:\\file.csv", 360, 517);
thread t1(&CSVReader::read_range, reader1);
thread t2(&CSVReader::read_range, reader2);
t1.join();
t2.join();
vector<vector<string>> temp_data = reader1.get_data(); // Here I have the problem
В идеале, reader1.get_data()
должен возвращать данные между line:214
и line:359
. Но когда я смотрю в temp_data
, я обнаружил, что он не изменился вообще.
Могу я узнать, что я не так? И как я могу это исправить?
Попробуйте уточнить ваш вопрос. Вы запрашиваете temp_data, где это нигде не описано. Когда вы push_back какие-то данные вам потребуется синхронизация, не так ли? – harper