Per-thread layermap will contain the file keys, not just a layer ID

This commit is contained in:
Eric Fischer
2016-08-29 14:59:28 -07:00
parent f7e64dca5f
commit c26fa23564
4 changed files with 21 additions and 12 deletions
+6 -6
View File
@@ -300,7 +300,7 @@ void *run_sort(void *v) {
return NULL;
}
void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, struct reader *reader, volatile long long *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector<std::map<std::string, int> > *layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, std::set<type_and_string> *file_keys, int maxzoom) {
void do_read_parallel(char *map, long long len, long long initial_offset, const char *reading, struct reader *reader, volatile long long *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector<std::map<std::string, layermap_entry> > *layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, std::set<type_and_string> *file_keys, int maxzoom) {
long long segs[CPUS + 1];
segs[0] = 0;
segs[CPUS] = len;
@@ -400,7 +400,7 @@ struct read_parallel_arg {
int basezoom;
int source;
int nlayers;
std::vector<std::map<std::string, int> > *layermaps;
std::vector<std::map<std::string, layermap_entry> > *layermaps;
double droprate;
int *initialized;
unsigned *initial_x;
@@ -444,7 +444,7 @@ void *run_read_parallel(void *v) {
return NULL;
}
void start_parsing(int fd, FILE *fp, long long offset, long long len, volatile int *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, struct reader *reader, volatile long long *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector<std::map<std::string, int> > &layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, std::set<type_and_string> *file_keys, int maxzoom) {
void start_parsing(int fd, FILE *fp, long long offset, long long len, volatile int *is_parsing, pthread_t *parallel_parser, bool &parser_created, const char *reading, struct reader *reader, volatile long long *progress_seq, std::set<std::string> *exclude, std::set<std::string> *include, int exclude_all, char *fname, int basezoom, int source, int nlayers, std::vector<std::map<std::string, layermap_entry> > &layermaps, double droprate, int *initialized, unsigned *initial_x, unsigned *initial_y, std::set<type_and_string> *file_keys, int maxzoom) {
// This has to kick off an intermediate thread to start the parser threads,
// so the main thread can get back to reading the next input stage while
// the intermediate thread waits for the completion of the parser threads.
@@ -1029,11 +1029,11 @@ int read_input(std::vector<source> &sources, char *fname, const char *layername,
}
}
std::map<std::string, int> layermap;
std::map<std::string, layermap_entry> layermap;
for (size_t l = 0; l < nlayers; l++) {
layermap.insert(std::pair<std::string, int>(layernames[l], l));
layermap.insert(std::pair<std::string, layermap_entry>(layernames[l], layermap_entry(l)));
}
std::vector<std::map<std::string, int> > layermaps;
std::vector<std::map<std::string, layermap_entry> > layermaps;
for (size_t l = 0; l < CPUS; l++) {
layermaps.push_back(layermap);
}