diff options
author | Sang-Hoon Park <sang-hoon.park@arm.com> | 2020-09-24 12:55:29 +0100 |
---|---|---|
committer | Sang-Hoon Park <sang-hoon.park@arm.com> | 2020-09-30 10:39:38 +0000 |
commit | de2e747de0a63933d0cfcb75739d9460ea7c2ff5 (patch) | |
tree | 241e89d8927f15ac64dcab598b9f79a9df89b2ed /src | |
parent | 14e868e0fbb22622d70aa5529818ee4737c4a863 (diff) | |
download | ComputeLibrary-de2e747de0a63933d0cfcb75739d9460ea7c2ff5.tar.gz |
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 <sang-hoon.park@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4052
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Giuseppe Rossini <giuseppe.rossini@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/runtime/Scheduler.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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<Scheduler::Type, std::unique_ptr<IScheduler>> init() } } // namespace -std::map<Scheduler::Type, std::unique_ptr<IScheduler>> Scheduler::_schedulers = init(); +std::map<Scheduler::Type, std::unique_ptr<IScheduler>> 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()) { |