pid_t pid;
} Worker;
static Worker *mc_us;
+static bool mc_am_generator;
static void multicore_check_for_new_best(void);
genpid = fork(); assert(genpid >= 0);
if (!genpid) {
+ mc_am_generator = 1;
LPRINTF("generator running");
iterate();
exit(0);
for (w=0; w<ncpus; w++) {
mc_rwvsetup_full();
- LPRINTF("reading report from %2d",w);
+ LPRINTF("reading report from %2d\n",w);
ssize_t sr = preadv(fileno(mc_workers[w].results), mc_iov, mc_niovs, 0);
if (!sr) continue;
+ LPRINTF("got report from %2d\n",w);
maxhamweight = 0;
optimise(1);
}
}
static void multicore_check_for_new_best(void) {
- if (!ncpus) return;
+ if (!(mc_us || mc_am_generator))
+ return;
for (;;) {
double msg;
}
static void multicore_found_new_best(void) {
- if (!ncpus) return;
+ if (!mc_us)
+ return;
if (mc_us /* might be master */) fprintf(stderr," w%-2d ",mc_us->w);
ssize_t wrote = write(mc_bus, &best, sizeof(best));