Merge pull request #398 from vsonnier/thread_clean_3

thread_clean_3: Multithreading AudioThread hardening, use of try_pop() and more.
This commit is contained in:
Charles J. Cliffe
2016-07-08 21:28:11 -04:00
committed by GitHub
21 changed files with 412 additions and 240 deletions
+8 -4
View File
@@ -68,11 +68,13 @@ public:
bool push(const value_type& item) {
std::lock_guard < std::mutex > lock(m_mutex);
if (m_max_num_items.load() > 0 && m_queue.size() > m_max_num_items.load())
if (m_max_num_items.load() > 0 && m_queue.size() > m_max_num_items.load()) {
m_condition.notify_all();
return false;
}
m_queue.push(item);
m_condition.notify_one();
m_condition.notify_all();
return true;
}
@@ -84,11 +86,13 @@ public:
bool push(const value_type&& item) {
std::lock_guard < std::mutex > lock(m_mutex);
if (m_max_num_items.load() > 0 && m_queue.size() > m_max_num_items.load())
if (m_max_num_items.load() > 0 && m_queue.size() > m_max_num_items.load()) {
m_condition.notify_all();
return false;
}
m_queue.push(item);
m_condition.notify_one();
m_condition.notify_all();
return true;
}