Skip to content

Commit cda32b9

Browse files
committed
Update code after review
Signed-off-by: Bogdan Pereanu <bogdan.pereanu@intel.com>
1 parent be3872c commit cda32b9

1 file changed

Lines changed: 12 additions & 19 deletions

File tree

src/inference/src/dev/iasync_infer_request.cpp

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ void ov::IAsyncInferRequest::cancel() {
106106

107107
void ov::IAsyncInferRequest::set_callback(std::function<void(std::exception_ptr)> callback) {
108108
check_state();
109-
std::lock_guard<std::mutex> callbackLock{m_callback_invoke_mutex};
109+
std::lock_guard callbackLock{m_callback_invoke_mutex};
110110
m_callback = std::move(callback);
111111
}
112112

@@ -160,27 +160,20 @@ ov::threading::Task ov::IAsyncInferRequest::make_next_stage_task(
160160
if ((itEndStage == itNextStage) || (nullptr != currentException)) {
161161
auto lastStageTask = [this, currentException]() mutable {
162162
std::promise<void> promise;
163-
std::function<void(std::exception_ptr)> callback;
164163
{
165-
std::lock_guard<std::mutex> callbackLock{m_callback_invoke_mutex};
166-
{
167-
std::lock_guard<std::mutex> lock{m_mutex};
168-
m_state = InferState::IDLE;
169-
promise = std::move(m_promise);
170-
}
164+
std::lock_guard<std::mutex> lock{m_mutex};
165+
m_state = InferState::IDLE;
166+
promise = std::move(m_promise);
167+
}
171168

172-
std::swap(callback, m_callback);
173-
if (callback) {
174-
try {
175-
callback(currentException);
176-
} catch (...) {
177-
currentException = std::current_exception();
178-
}
179-
if (!m_callback) {
180-
std::swap(callback, m_callback);
181-
}
169+
if (std::lock_guard callbackLock{m_callback_invoke_mutex}; m_callback) {
170+
try {
171+
m_callback(currentException);
172+
} catch (...) {
173+
currentException = std::current_exception();
182174
}
183175
}
176+
184177
if (nullptr == currentException) {
185178
promise.set_value();
186179
} else {
@@ -256,7 +249,7 @@ void ov::IAsyncInferRequest::stop_and_wait() {
256249
state = m_state;
257250
if (state != InferState::STOP) {
258251
{
259-
std::lock_guard<std::mutex> callbackLock{m_callback_invoke_mutex};
252+
std::lock_guard callbackLock{m_callback_invoke_mutex};
260253
m_callback = {};
261254
}
262255
m_state = InferState::STOP;

0 commit comments

Comments
 (0)