VERB0("Starting...");
comp_iter = lb_iter = 0;
while (true) {
- double ld = lb_load();
+ double ld = get_load();
if (ld > 0.0) {
double now = MSG_get_clock();
if (now < next_iter_after_date)
print_loads(true, xbt_log_priority_debug);
}
- lb_load() = ld;
+ set_load(ld);
// send load information, and load (data) if any
send_all();
// block on receiving unless there is something to compute or
// to send
double timeout;
- if (real_load != 0 || lb_load() != prev_load_broadcast)
+ if (real_load != 0 || get_load() != prev_load_broadcast)
timeout = 0.0;
else if (opt::min_iter_duration)
timeout = opt::min_iter_duration;
pneigh_type pneigh; // list of pointers to neighbors that
// we are free to reorder
+ // Get and set current load, which may be real load, or expected
+ // load if opt::bookkeeping is true.
+ double get_load() const;
+ void set_load(double load);
+
// Calls neighbor::print(verbose, logp, cat) for each member of neigh.
void print_loads(bool verbose = false,
e_xbt_log_priority_t logp = xbt_log_priority_info,
double real_load; // current load
double expected_load; // expected load in bookkeeping mode
- double& lb_load() { return opt::bookkeeping ? expected_load : real_load; }
-
// The load balancing algorithm comes here...
// Parameter "my_load" is the load to take into account for myself
// (may be real load or expected load).
void finalize();
};
+inline
+double process::get_load() const
+{
+ if (opt::bookkeeping)
+ return expected_load;
+ else
+ return real_load;
+}
+
+inline
+void process::set_load(double load)
+{
+ if (opt::bookkeeping)
+ expected_load = load;
+ else
+ real_load = load;
+}
+
#endif // !PROCESS_H
// Local variables: