virtual void launchTask(ExecutorDriver* driver, const TaskDescription& task) { cout << "Executor starting task " << task.task_id().value() << endl; int64_t memToHog; double duration; int numThreads; istringstream in(task.data()); in >> memToHog >> duration >> numThreads; memToHog *= 1024LL * 1024LL; // Convert from MB to bytes for (int i = 0; i < numThreads; i++) { ThreadArg* arg = new ThreadArg(this, task, i, memToHog, duration); pthread_t thread; pthread_create(&thread, 0, runTask, arg); pthread_detach(thread); TaskStatus status; status.mutable_task_id()->MergeFrom(task.task_id()); status.set_state(TASK_RUNNING); driver->sendStatusUpdate(status); } }