Skip to content

Commit 7123da6

Browse files
authored
Merge pull request #865 from bagage/display_pending_items_progress
Display progress while processing pending relations/ways
2 parents 93b73e5 + 5e43b97 commit 7123da6

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

osmdata.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,20 @@ struct pending_threaded_processor : public middle_t::pending_processor {
217217
}
218218
}
219219

220+
static void print_stats(pending_queue_t &queue, std::mutex &mutex)
221+
{
222+
size_t queue_size;
223+
do {
224+
mutex.lock();
225+
queue_size = queue.size();
226+
mutex.unlock();
227+
228+
fprintf(stderr, "\rLeft to process: %zu...", queue_size);
229+
230+
std::this_thread::sleep_for(std::chrono::seconds(1));
231+
} while (queue_size > 0);
232+
}
233+
220234
//starts up count threads and works on the queue
221235
pending_threaded_processor(std::shared_ptr<middle_query_t> mid,
222236
const output_vec_t &outs, size_t thread_count,
@@ -275,8 +289,8 @@ struct pending_threaded_processor : public middle_t::pending_processor {
275289
std::ref(queue), std::ref(ids_done),
276290
std::ref(mutex), append, true));
277291
}
278-
279-
//TODO: print out partial progress
292+
workers.push_back(std::async(std::launch::async, print_stats,
293+
std::ref(queue), std::ref(mutex)));
280294

281295
for (auto& w: workers) {
282296
try {
@@ -337,6 +351,8 @@ struct pending_threaded_processor : public middle_t::pending_processor {
337351
std::ref(queue), std::ref(ids_done),
338352
std::ref(mutex), append, false));
339353
}
354+
workers.push_back(std::async(std::launch::async, print_stats,
355+
std::ref(queue), std::ref(mutex)));
340356

341357
for (auto& w: workers) {
342358
try {

0 commit comments

Comments
 (0)