From 7845ac4ca9afb3b82dd5f97114da124915613a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kiviyu=28=E4=BD=99=E5=86=9B=29?= Date: Thu, 7 Mar 2024 19:22:25 +0800 Subject: [PATCH] Feature: Modify the key of scheduling_map to std::string to avoid accessing SeparateScheduling as nullptr during startup --- trpc/runtime/threadmodel/separate/separate_scheduling.cc | 6 +++--- trpc/runtime/threadmodel/separate/separate_scheduling.h | 4 ++-- .../threadmodel/separate/separate_thread_model_test.cc | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/trpc/runtime/threadmodel/separate/separate_scheduling.cc b/trpc/runtime/threadmodel/separate/separate_scheduling.cc index 66c9be75..da72231c 100644 --- a/trpc/runtime/threadmodel/separate/separate_scheduling.cc +++ b/trpc/runtime/threadmodel/separate/separate_scheduling.cc @@ -17,15 +17,15 @@ namespace trpc { -static std::unordered_map scheduling_create_funtion_map; +static std::unordered_map scheduling_create_funtion_map; -bool RegisterSeparateSchedulingImpl(const std::string_view& name, SeparateSchedulingCreateFunction&& func) { +bool RegisterSeparateSchedulingImpl(const std::string& name, SeparateSchedulingCreateFunction&& func) { scheduling_create_funtion_map[name] = std::move(func); return true; } -std::unique_ptr CreateSeparateScheduling(const std::string_view& name) { +std::unique_ptr CreateSeparateScheduling(const std::string& name) { auto it = scheduling_create_funtion_map.find(name); if (it != scheduling_create_funtion_map.end()) { return (it->second)(); diff --git a/trpc/runtime/threadmodel/separate/separate_scheduling.h b/trpc/runtime/threadmodel/separate/separate_scheduling.h index b6a7b75e..f44b1914 100644 --- a/trpc/runtime/threadmodel/separate/separate_scheduling.h +++ b/trpc/runtime/threadmodel/separate/separate_scheduling.h @@ -88,8 +88,8 @@ constexpr std::string_view kNonStealScheduling = "non_steal"; constexpr std::string_view kStealScheduling = "steal"; -bool RegisterSeparateSchedulingImpl(const std::string_view& name, SeparateSchedulingCreateFunction&& func); +bool RegisterSeparateSchedulingImpl(const std::string& name, SeparateSchedulingCreateFunction&& func); -std::unique_ptr CreateSeparateScheduling(const std::string_view& name); +std::unique_ptr CreateSeparateScheduling(const std::string& name); } // namespace trpc diff --git a/trpc/runtime/threadmodel/separate/separate_thread_model_test.cc b/trpc/runtime/threadmodel/separate/separate_thread_model_test.cc index 7ab0c682..2ebf206a 100644 --- a/trpc/runtime/threadmodel/separate/separate_thread_model_test.cc +++ b/trpc/runtime/threadmodel/separate/separate_thread_model_test.cc @@ -59,7 +59,7 @@ class TestSeparateThreadModel : public ::testing::Test { std::make_unique(std::move(option)); return sep_sche; }; - RegisterSeparateSchedulingImpl(kNonStealScheduling, std::move(sche_create_func)); + RegisterSeparateSchedulingImpl(std::string(kNonStealScheduling), std::move(sche_create_func)); // Register the taskflow scheduler creation function sche_create_func = []() { @@ -70,7 +70,7 @@ class TestSeparateThreadModel : public ::testing::Test { std::unique_ptr sep_sche = std::make_unique(std::move(option)); return sep_sche; }; - RegisterSeparateSchedulingImpl(kStealScheduling, std::move(sche_create_func)); + RegisterSeparateSchedulingImpl(std::string(kStealScheduling), std::move(sche_create_func)); } static SeparateThreadModel* CreateSeparateThreadModel(ScheduleType type) {