From de2e747de0a63933d0cfcb75739d9460ea7c2ff5 Mon Sep 17 00:00:00 2001 From: Sang-Hoon Park Date: Thu, 24 Sep 2020 12:55:29 +0100 Subject: COMPMID-3782: Delay initialization of Scheduler To fix the deadlock in multi-process use-case, Scheduler object is initialized when it is actually referenced using get() method for the first time instead of the beginning of the program. Change-Id: Ib2dd47795011cf6137b1454c78d91736deb80a8b Signed-off-by: Sang-Hoon Park Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4052 Tested-by: Arm Jenkins Reviewed-by: Giuseppe Rossini Reviewed-by: Michele Di Giorgio Comments-Addressed: Arm Jenkins --- src/runtime/Scheduler.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/runtime/Scheduler.cpp b/src/runtime/Scheduler.cpp index 4063cc1c00..5b3010b173 100644 --- a/src/runtime/Scheduler.cpp +++ b/src/runtime/Scheduler.cpp @@ -67,7 +67,7 @@ std::map> init() } } // namespace -std::map> Scheduler::_schedulers = init(); +std::map> Scheduler::_schedulers{}; void Scheduler::set(Type t) { @@ -107,6 +107,11 @@ IScheduler &Scheduler::get() } else { + if(_schedulers.empty()) + { + _schedulers = init(); + } + auto it = _schedulers.find(_scheduler_type); if(it != _schedulers.end()) { -- cgit v1.2.1