11 state_ = std::make_shared<State>(std::move(
fn));
19 std::lock_guard<std::mutex> lock(state_->mu);
20 return state_->status;
24 std::lock_guard<std::mutex> lock(state_->mu);
25 return state_->status ==
"done" || state_->status ==
"failed";
29 std::lock_guard<std::mutex> lock(state_->mu);
30 return state_->status ==
"failed";
34 std::lock_guard<std::mutex> lock(state_->mu);
40 std::unique_lock<std::mutex> lock(
state->mu);
50 std::lock_guard<std::mutex> lock(
state->mu);
51 state->status =
"running";
56 std::lock_guard<std::mutex> lock(
state->mu);
57 state->status =
"done";
59 std::lock_guard<std::mutex> lock(
state->mu);
60 state->status =
"failed";
62 }
catch (
const std::exception &e) {
63 std::lock_guard<std::mutex> lock(
state->mu);
64 state->status =
"failed";
65 state->error = e.what();
67 std::lock_guard<std::mutex> lock(
state->mu);
68 state->status =
"failed";
69 state->error =
"unknown exception";
72 state->cv.notify_all();
JobSystemThreadPool::State * state
SettlementPipeline::Stage fn
virtual const char * what() const
Returns a string containing reason for the exception.
void wait()
Block until the task finishes (done or failed).
std::string getError() const
Task(std::function< void()> fn)
std::string getStatus() const