Need to do this too.

This commit is contained in:
JoelKatz
2013-03-06 23:31:20 -08:00
parent fbd854e2e9
commit caf9c1f552

View File

@@ -82,9 +82,9 @@ public:
* pointer. * pointer.
*/ */
element_ptr get() { element_ptr get() {
boost::lock_guard<boost::recursive_mutex> lock(m_lock); element_ptr p, q;
{
element_ptr p, q; boost::lock_guard<boost::recursive_mutex> lock(m_lock);
/*std::cout << "message requested (" /*std::cout << "message requested ("
<< m_cur_elements-m_avaliable.size() << m_cur_elements-m_avaliable.size()
@@ -93,26 +93,27 @@ public:
<< ")" << ")"
<< std::endl;*/ << std::endl;*/
if (!m_avaliable.empty()) { if (!m_avaliable.empty()) {
p = m_avaliable.front(); p = m_avaliable.front();
q = p; q = p;
m_avaliable.pop(); // FIXME can call intrusive_ptr_release(line 217) which can deadlock m_avaliable.pop(); // FIXME can call intrusive_ptr_release(line 217) which can deadlock
m_used[p->get_index()] = p; m_used[p->get_index()] = p;
} else { } else {
if (m_cur_elements == m_max_elements) { if (m_cur_elements == m_max_elements) {
return element_ptr(); return element_ptr();
} }
p = element_ptr(new element_type(type::shared_from_this(),m_cur_elements)); p = element_ptr(new element_type(type::shared_from_this(),m_cur_elements));
m_cur_elements++; m_cur_elements++;
m_used.push_back(p); m_used.push_back(p);
/*std::cout << "Allocated new data message. Count is now " /*std::cout << "Allocated new data message. Count is now "
<< m_cur_elements << m_cur_elements
<< std::endl;*/ << std::endl;*/
} }
p->set_live(); p->set_live();
}
return p; return p;
} }
void recycle(element_ptr p) { void recycle(element_ptr p) {