I'm trying to use asio in linux and windows, and I have to use a very specific way of starting my IO Service to get it to work in windows xp:

void start()


      tcp::endpoint endpoint = *iterator_;
      socket_.async_connect(endpoint,
          boost::bind(&MessageHandler::handle_connect, this,
          boost::asio::placeholders::error, ++iterator_ ) );
      boost::thread t( boost::bind( &boost::asio::io_service::run, &(socket_.get_io_service() )));
      t.detach();
      //threadPool_.schedule(boost::bind( &boost::asio::io_service::run, &(socket_.get_io_service()) ) );
}

The commented out line is what I wanted to use (threadpool), as thread detach is far from an ideal situation.  To work in windows, I have to call io_service.run() in this function and thread detach;  it doesn't seem to work any other way.  Everything pretty much works in linux.  Is there a pattern that I should be using here for cross platform usage of the library?  Any ideas why the threadpool solution doesn't work in windows? (http://threadpool.sourceforge.net/)

Thanks,

--
Kenny Stone
Connamara Systems, LLC