Hello,

which is the expected behaviour of condition variable wait when unique_lock is not locked

boost::condition_variable cond;
boost::mutex mut;
bool data_ready;

void process_data();

void wait_for_data_to_process()
{
    boost::unique_lock<boost::mutex> lock(mut);
    while(!data_ready)
    {
        if (some_condition_or_bug ) {
            lock.unlock();
        }
        cond.wait(lock);        // <<<<<<<< ?????????
    }
    process_data();
}
 
Best regards
_____________________
Vicente Juan Botet Escriba
_______________________________
inline void condition_variable::wait(unique_lock<mutex>& m)
{
detail::interruption_checker check_for_interruption(&cond);
BOOST_VERIFY(!pthread_cond_wait(&cond,m.mutex()->native_handle()));
}