Boost logo

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