/** * Thread main loop. */ void runRace(void) { os::unique_lock<os::mutex> lock(mutex); while (1) { while (!finished && !baton) { wake_cond.wait(lock); } if (finished) { break; } assert(baton); trace::Call *call = baton; baton = 0; runLeg(call); } if (0) std::cerr << "leg " << leg << " actually finishing\n"; if (leg == 0) { race->stopRunners(); } }