$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2004-07-20 15:13:10
Alexander Terekhov wrote:
> 
> Alexander Terekhov wrote:
> [...]
> > Err.      m_retry_event.wait(), m_retry_event.set();
> 
> I mean
> 
>   void lock() throw() {
>     if (int lock_status = m_lock_status.cas(0, 1, msync::ddacq)) {
>       do if (lock_status < 0 || m_lock_status.cas(1,-1, msync::ddacq))
>         m_retry_event.wait();
>       while (lock_status = m_lock_status.cas(0, 1, msync::ddacq));
>       m_retry_event.set();
>     }
>   }
> 
>   bool trylock() throw() {
>     return !m_lock_status.cas(0, 1, msync::ddacq);
>   }
> 
>   void unlock() throw() {
>     if (m_lock_status.swap(0, msync::rel) < 0)
>       m_retry_event.set();
>   }
Bad day. It still can go boom. Forget it. lock_queue is the way to go.
regards,
alexander.