Hi All
I am playing with boost::thread and it is not clear how thread::interrupt actually works.

If I understood clearly the thread will be interrupted the next time it enters one of the predefined interruption points; since thread::join is one interruption point, after I call tr.interrupt() I am expected that the thread will throw a boost::thread_interrupted exception once I call tr.join() right? .

Below the sample code I am working now and I cannot get this behavior. Maybe I misunderstood the meaning of interrupt.
If I uncomment the call to this_thread::sleep() I can see the thread_interrupted exception.
Can you help me in understanding?
Regards


void f1_good(){
    try{   
        int i = 0;               
        while(true){       
            i++;

            // boost::this_thread::sleep( boost::posix_time::milliseconds( 0 ) );  // if I
            // uncomment this line calling interrupt will throw thread_interrupted
        }
       
    }catch(boost::thread_interrupted& ex ){
        std::cout << "BREAK HERE!!" << std::endl; std::cout.flush();
    }
}

int main( int argc, char** argv ){

    boost::thread tr( f1 );
    boost::this_thread::sleep( boost::posix_time::seconds( 3 ) );
   
    std::cout << "calisl to INTER." << std::endl; std::cout.flush();
    tr.interrupt();
   
    std::cout << "PAUSE BEFORE JOIN." << std::endl;  std::cout.flush();
    boost::this_thread::sleep( boost::posix_time::seconds( 5 ) );
   
    std::cout << "join" << std::endl;
    tr.join();
}