16 namespace visualization {
20 enum class ThreadState { NOT_STARTED, RUNNING, FINISHED };
32 impl_->state_ = ThreadState::NOT_STARTED;
33 impl_->is_finished_running_ =
false;
42 if (impl_->state_ != ThreadState::NOT_STARTED) {
47 auto thread_main = [
this]() {
49 impl_->is_finished_running_ =
true;
51 impl_->thread_ = std::thread(thread_main);
52 impl_->state_ = ThreadState::RUNNING;
56 switch (impl_->state_) {
57 case ThreadState::NOT_STARTED:
59 case ThreadState::RUNNING:
60 return impl_->is_finished_running_;
61 case ThreadState::FINISHED:
68 if (impl_->state_ == ThreadState::RUNNING) {
69 impl_->thread_.join();
70 impl_->state_ = ThreadState::FINISHED;
Task(std::function< void()> f)
~Task()
Will call WaitToFinish(), which may block.
Generic file read and write utility for python interface.
std::function< void()> func_
std::atomic< bool > is_finished_running_