: name_prefix_(name_prefix),
pool_(pool) {}
- virtual void ThreadMain() OVERRIDE;
+ void ThreadMain() override;
private:
const std::string name_prefix_;
PendingTask pending_task = pool_->WaitForTask();
if (pending_task.task.is_null())
break;
- TRACE_EVENT2("task", "WorkerThread::ThreadMain::Run",
+ TRACE_EVENT2("toplevel", "WorkerThread::ThreadMain::Run",
"src_file", pending_task.posted_from.file_name(),
"src_func", pending_task.posted_from.function_name());
- TrackedTime start_time =
- tracked_objects::ThreadData::NowForStartOfRun(pending_task.birth_tally);
-
+ tracked_objects::ThreadData::PrepareForStartOfRun(pending_task.birth_tally);
+ tracked_objects::TaskStopwatch stopwatch;
+ stopwatch.Start();
pending_task.task.Run();
+ stopwatch.Stop();
tracked_objects::ThreadData::TallyRunOnWorkerThreadIfTracking(
pending_task.birth_tally, TrackedTime(pending_task.time_posted),
- start_time, tracked_objects::ThreadData::NowForEndOfRun());
+ stopwatch);
}
// The WorkerThread is non-joinable, so it deletes itself.