
I'm writting a multiplatform app which uses a tcp::acceptor. Thread one does: { std::cout<<"Oh but I interupted: "<<std::endl; _myTCPAcceptor->close(); std::cout<<"Done interupting "<<std::endl; } std::cout<<"About to join "<<std::endl; _myAcceptorThread->join(); std::cout<<"Join complete"<<std::endl; Thread two does: { boost::system::error_code ec; boost::asio::socket_base::non_blocking_io command(false); _mySocket.io_control(command,ec); boost::system::error_code ec1; std::cout<<"About to accept "<<std::endl; _myTCPAcceptor->accept(_mySocket,ec1); std::cout<<boost::system::system_error(ec1).what()<<std::endl; std::cout<<"done with the accept"<<std::endl; } Output is: Linux Redhat: About to accept Oh but I interupted: Done interupting About to join ... blocks forever Windows XP: About to accept Oh but I interupted: Done interupting About to join A blocking operation was interrupted by a call to WSACancelBlockingCall done with the accept Join complete on windows xp pro the call populates error code with: A blocking operation was interrupted by a call to WSACancelBlockingCall Any solutions other wise I gotta go to pocking the acceptor with another socket connection :(. -- View this message in context: http://www.nabble.com/tcp%3A%3Aacceptor-works-differently-on-windows-than-li... Sent from the Boost - Users mailing list archive at Nabble.com.