summaryrefslogtreecommitdiffstats
path: root/chromium/base/task/task_executor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/base/task/task_executor.cc')
-rw-r--r--chromium/base/task/task_executor.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/chromium/base/task/task_executor.cc b/chromium/base/task/task_executor.cc
index 8b527b0cd5b..355fa3f445f 100644
--- a/chromium/base/task/task_executor.cc
+++ b/chromium/base/task/task_executor.cc
@@ -6,8 +6,10 @@
#include <type_traits>
+#include "base/no_destructor.h"
#include "base/task/task_traits.h"
#include "base/task/task_traits_extension.h"
+#include "base/threading/thread_local.h"
namespace base {
@@ -30,6 +32,21 @@ static_assert(
} // namespace
+ThreadLocalPointer<TaskExecutor>* GetTLSForCurrentTaskExecutor() {
+ static NoDestructor<ThreadLocalPointer<TaskExecutor>> instance;
+ return instance.get();
+}
+
+void SetTaskExecutorForCurrentThread(TaskExecutor* task_executor) {
+ DCHECK(!task_executor || !GetTLSForCurrentTaskExecutor()->Get() ||
+ GetTLSForCurrentTaskExecutor()->Get() == task_executor);
+ GetTLSForCurrentTaskExecutor()->Set(task_executor);
+}
+
+TaskExecutor* GetTaskExecutorForCurrentThread() {
+ return GetTLSForCurrentTaskExecutor()->Get();
+}
+
void RegisterTaskExecutor(uint8_t extension_id, TaskExecutor* task_executor) {
DCHECK_NE(extension_id, TaskTraitsExtensionStorage::kInvalidExtensionId);
DCHECK_LE(extension_id, TaskTraitsExtensionStorage::kMaxExtensionId);
@@ -57,4 +74,4 @@ TaskExecutor* GetRegisteredTaskExecutorForTraits(const TaskTraits& traits) {
return nullptr;
}
-} // namespace base \ No newline at end of file
+} // namespace base