Boost logo

Boost Users :

Subject: Re: [Boost-users] Concurrency and session termination in boost::asio
From: Igor R (boost.lists_at_[hidden])
Date: 2008-11-06 04:15:30


> Does all of that sound about right?

Yes, that's exactly the way it's done in the examples.

> The close method calls "is_open" to determine if the socket has
> already been closed, and if it is not asks the OS to close it.
>
> It looks to me like this is not done in a threadsafe way.

Right, you should post closing to the io_service thread, like this:

void my_connection::close()
{
  io_service_.post(boost::bind(&my_connection::do_close, shared_from_this()));
}

void my_connection::do_close()
{
  boost::system::error_code err;
  socket_.close(err);
}


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net