diff options
| -rw-r--r-- | tdactor/td/actor/ConcurrentScheduler.cpp | 7 | ||||
| -rw-r--r-- | tdactor/td/actor/ConcurrentScheduler.h | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/tdactor/td/actor/ConcurrentScheduler.cpp b/tdactor/td/actor/ConcurrentScheduler.cpp index c904295ad..f3d20ca29 100644 --- a/tdactor/td/actor/ConcurrentScheduler.cpp +++ b/tdactor/td/actor/ConcurrentScheduler.cpp @@ -70,6 +70,12 @@ void ConcurrentScheduler::test_one_thread_run() { } while (!is_finished_.load(std::memory_order_relaxed)); } +thread::id ConcurrentScheduler::get_thread_id(int32 sched_id) { + auto thread_pos = static_cast<size_t>(sched_id - 1); + CHECK(thread_pos < threads_.size()); + return threads_[thread_pos].get_id(); +} + void ConcurrentScheduler::start() { CHECK(state_ == State::Start); is_finished_.store(false, std::memory_order_relaxed); @@ -100,6 +106,7 @@ void ConcurrentScheduler::start() { state_ = State::Run; } + static TD_THREAD_LOCAL double emscripten_timeout; bool ConcurrentScheduler::run_main(Timestamp timeout) { diff --git a/tdactor/td/actor/ConcurrentScheduler.h b/tdactor/td/actor/ConcurrentScheduler.h index 490deb218..29574d246 100644 --- a/tdactor/td/actor/ConcurrentScheduler.h +++ b/tdactor/td/actor/ConcurrentScheduler.h @@ -31,9 +31,11 @@ class ConcurrentScheduler final : private Scheduler::Callback { void finish_async() { schedulers_[0]->finish(); } + void wakeup() { schedulers_[0]->wakeup(); } + SchedulerGuard get_main_guard() { return schedulers_[0]->get_guard(); } @@ -48,6 +50,8 @@ class ConcurrentScheduler final : private Scheduler::Callback { return is_finished_.load(std::memory_order_relaxed); } + thread::id get_thread_id(int32 sched_id); + void start(); bool run_main(double timeout) { |
