|
Boost : |
From: Roland Schwarz (roland.schwarz_at_[hidden])
Date: 2005-09-02 06:42:15
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk