c++ - Get member data from a thread -


i reading .csv file using multiple threads. each thread reads part of .csv file, eg. thread1 reads line:214 line:359.

csvreader reader1("c:\\file.csv", 214, 359); 

during reading process, data fields stored in vector instance.

data[i].push_back(data_field); 

in main function, codes below:

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 have problem 

ideally, reader1.get_data() should return data between line:214 , line:359. when temp_data, found not changed @ all.

may know wrong? , how can fix it?

when create threads pass copies of reader1 , reader2, copies modified not original objects. means data added copies, , original objects unchanged. pass them reference use std::ref(reader1) , std::ref(reader2).

if csvreader::read_range function takes reference code should not compile, buggy compilers (including visual c++) accept it.

(n.b. in general should have shown definition or @ least signature of csvreader::read_range people don't have guess code does.)


Comments

Popular posts from this blog

c++ - Creating new partition disk winapi -

Android Prevent Bluetooth Pairing Dialog -

VBA function to include CDATA -