diff --git a/sycl/source/detail/scheduler/scheduler.cpp b/sycl/source/detail/scheduler/scheduler.cpp index c10c4e00add68..5965ac4b6e682 100644 --- a/sycl/source/detail/scheduler/scheduler.cpp +++ b/sycl/source/detail/scheduler/scheduler.cpp @@ -276,13 +276,13 @@ void Scheduler::enqueueLeavesOfReqUnlocked(const Requirement *const Req) { void Scheduler::allocateStreamBuffers(stream_impl *Impl, size_t StreamBufferSize, size_t FlushBufferSize) { - std::lock_guard lock(StreamBuffersPoolMutex); + std::lock_guard lock(StreamBuffersPoolMutex); StreamBuffersPool.insert( {Impl, new StreamBuffers(StreamBufferSize, FlushBufferSize)}); } void Scheduler::deallocateStreamBuffers(stream_impl *Impl) { - std::lock_guard lock(StreamBuffersPoolMutex); + std::lock_guard lock(StreamBuffersPoolMutex); delete StreamBuffersPool[Impl]; StreamBuffersPool.erase(Impl); } @@ -302,7 +302,7 @@ Scheduler::~Scheduler() { // the kernel. Otherwise resources for stream will not be released, issue a // warning in this case. if (pi::trace(pi::TraceLevel::PI_TRACE_BASIC)) { - std::lock_guard lock(StreamBuffersPoolMutex); + std::lock_guard lock(StreamBuffersPoolMutex); if (!StreamBuffersPool.empty()) fprintf( stderr, diff --git a/sycl/source/detail/scheduler/scheduler.hpp b/sycl/source/detail/scheduler/scheduler.hpp index 2665365dde815..631307c76935d 100644 --- a/sycl/source/detail/scheduler/scheduler.hpp +++ b/sycl/source/detail/scheduler/scheduler.hpp @@ -766,7 +766,7 @@ class Scheduler { friend class stream_impl; // Protects stream buffers pool - std::mutex StreamBuffersPoolMutex; + std::recursive_mutex StreamBuffersPoolMutex; // We need to store a pointer to the structure with stream buffers because we // want to avoid a situation when buffers are destructed during destruction of