diff options
Diffstat (limited to 'src/armnn/AsyncExecutionCallback.cpp')
-rw-r--r-- | src/armnn/AsyncExecutionCallback.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/armnn/AsyncExecutionCallback.cpp b/src/armnn/AsyncExecutionCallback.cpp index 2973e2d891..5b87927af2 100644 --- a/src/armnn/AsyncExecutionCallback.cpp +++ b/src/armnn/AsyncExecutionCallback.cpp @@ -14,14 +14,18 @@ namespace experimental void AsyncExecutionCallback::Notify(armnn::Status status, InferenceTimingPair timeTaken) { { +#if !defined(ARMNN_DISABLE_THREADS) std::lock_guard<std::mutex> hold(m_Mutex); +#endif // store results and mark as notified m_Status = status; m_StartTime = timeTaken.first; m_EndTime = timeTaken.second; m_NotificationQueue.push(m_InferenceId); } +#if !defined(ARMNN_DISABLE_THREADS) m_Condition.notify_all(); +#endif } armnn::Status AsyncExecutionCallback::GetStatus() const @@ -41,7 +45,12 @@ HighResolutionClock AsyncExecutionCallback::GetEndTime() const std::shared_ptr<AsyncExecutionCallback> AsyncCallbackManager::GetNewCallback() { - auto cb = std::make_unique<AsyncExecutionCallback>(m_NotificationQueue, m_Mutex, m_Condition); + auto cb = std::make_unique<AsyncExecutionCallback>(m_NotificationQueue +#if !defined(ARMNN_DISABLE_THREADS) + , m_Mutex + , m_Condition +#endif + ); InferenceId id = cb->GetInferenceId(); m_Callbacks.insert({id, std::move(cb)}); @@ -50,10 +59,11 @@ std::shared_ptr<AsyncExecutionCallback> AsyncCallbackManager::GetNewCallback() std::shared_ptr<AsyncExecutionCallback> AsyncCallbackManager::GetNotifiedCallback() { +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> lock(m_Mutex); m_Condition.wait(lock, [this] { return !m_NotificationQueue.empty(); }); - +#endif InferenceId id = m_NotificationQueue.front(); m_NotificationQueue.pop(); @@ -64,4 +74,4 @@ std::shared_ptr<AsyncExecutionCallback> AsyncCallbackManager::GetNotifiedCallbac } // namespace experimental -} // namespace armnn
\ No newline at end of file +} // namespace armnn |