aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2022-10-04 23:12:50 +0300
committerlevlam <levlam@telegram.org>2022-10-04 23:12:50 +0300
commit7aa6f2bf91ef3a1a32a5f6222ff002b602950822 (patch)
tree4d461525ea3466591f37539c5ad8a9fe5fe53707
parent67aa7082d6fa8453f060143a88384478f5fb9365 (diff)
Add ConcurrentScheduler::get_thread_id.
-rw-r--r--tdactor/td/actor/ConcurrentScheduler.cpp7
-rw-r--r--tdactor/td/actor/ConcurrentScheduler.h4
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) {