Subj : Re: Optimization to Jeffrey Richter's COptex (Windows)? To : comp.programming.threads From : SenderX Date : Thu Jan 27 2005 10:49 pm YeoW! > LONG wake( volatile LPLONG dest, > LONG signals ) > { > { > mutex::guard lock( m_mutex ); > > if ( m_waiters > 0 ) > { > if ( m_waiters >= signals ) > { > m_waiters -= signals; > } > > else > { > signals = m_waiters; > m_waiters = 0; > } > } This has to be here: else { signals = 0; } ^^^^^^^^^^^^^^^^^^^^^ > > if ( m_waiters ) { InterlockedBTS( dest, 0x80000000 ); } > } > > if ( signals ) > { > if ( ! ReleaseSemaphore( m_queue, signals, 0 ) ) > { > throw; > } > } > > return signals; > } .