@@ -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, " \r Left 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