summaryrefslogtreecommitdiff
path: root/Source/Core/Common/WorkQueueThread.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/WorkQueueThread.h')
-rw-r--r--Source/Core/Common/WorkQueueThread.h19
1 files changed, 9 insertions, 10 deletions
diff --git a/Source/Core/Common/WorkQueueThread.h b/Source/Core/Common/WorkQueueThread.h
index 426d8b493d..e5dfac8b49 100644
--- a/Source/Core/Common/WorkQueueThread.h
+++ b/Source/Core/Common/WorkQueueThread.h
@@ -27,14 +27,14 @@ public:
Shutdown();
m_shutdown.Clear();
m_function = std::move(function);
- m_thread = std::thread([this] { ThreadLoop(); });
+ m_thread = std::thread(&WorkQueueThread::ThreadLoop, this);
}
template <typename... Args>
void EmplaceItem(Args&&... args)
{
{
- std::unique_lock<std::mutex> lg(m_lock);
+ std::lock_guard lg(m_lock);
m_items.emplace(std::forward<Args>(args)...);
}
m_wakeup.Set();
@@ -59,14 +59,13 @@ private:
while (true)
{
- T item;
- {
- std::unique_lock<std::mutex> lg(m_lock);
- if (m_items.empty())
- break;
- item = m_items.front();
- m_items.pop();
- }
+ std::unique_lock lg(m_lock);
+ if (m_items.empty())
+ break;
+ T item{std::move(m_items.front())};
+ m_items.pop();
+ lg.unlock();
+
m_function(std::move(item));
}