+ bool one_more = true;
+ unsigned iter = 0;
+
+ INFO1("Initial load: %g", load);
+ VERB0("Starting...");
+ while (one_more) {
+ bool close_received;
+ ++iter;
+
+ if (opt::log_rate && iter % opt::log_rate == 0) {
+ if (opt::bookkeeping)
+ INFO3("(%u) current load: %g ; expected: %g",
+ iter, load, expected_load);
+ else
+ INFO2("(%u) current load: %g",
+ iter, load);
+ }
+
+ compute();
+ close_received = !receive(false);
+
+ /*
+ * compute load balancing;
+ * send tasks to neighbors;
+ */
+
+ comm.flush(false);
+
+ if (opt::exit_on_close && close_received)
+ one_more = false;
+ if (opt::maxiter && iter >= opt::maxiter)
+ one_more = false;