
John Maddock schrieb:
Hopefully someone else can also take a look at this?
In the file: read_write_mutex.cpp In function: void read_write_mutex_impl<Mutex>::do_write_lock() The lines added by me (RS): -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- else if (m_sp == read_write_scheduling_policy::writer_priority) { //Writer priority: wait while locked BOOST_DEFINE_LOOP_COUNT adjust_dual_count adjust_waking(m_num_waking_writers, m_num_max_waking_writers, false); if (m_state == 0 && m_num_waking_writers > 0) // added by RS adjust_waking.set_adjust(true); // added by RS while (m_state != 0) { BOOST_ASSERT_LOOP_COUNT(); //See note at BOOST_ASSERT_LOOP_COUNT definition above BOOST_ASSERT(waker_exists()); //There should be someone to wake us up adjust_count adjust_waiting(m_num_waiting_writers); adjust_waking.set_adjust(true); m_waiting_writers.wait(l); } } -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- -->8-- apparently fix the problem. As I am in a hurry just at the moment I cannot be more verbose. I'll be back later. However I definitely would ask someone else to review the change before checking this in, since the code is rather involved, and I am currently not sure if I am doing just cosmetics, or if I understood the consequences in its entirety. Regrads. Roland