On Thu, 06 Nov 2008 17:38:39 +0100, Scott Gifford
"Igor R"
writes: If those requests are scheduled on two different worker threads, they could execute simultaneously, and still cause problems.
Sorry, I forgot that you run one io_service in several threads... Why wouldn't you scale your application using "io_service per CPU" approach, rather than "thread per CPU"?
At first glance, thread per CPU seemed simpler. Also I was planning on having my read callback handle some commands that may be slow, such as database queries, and I didn't want all other clients in the same io_service to block while that's happening. But certainly I can change that.
See http://thread.gmane.org/gmane.comp.lib.boost.asio.user/1300 for a (small) discussion about the various designs. I wouldn't change the design of an application though just because of difficulties in closing a socket. Boris