The quality of the argument against mutlithreading is undermined quite a bit by choosing one of the most poorly written networking library functions around. If you want to do this right, use libevent or Boost.Asio asynchronous resolvers.
I do have to admit that I didn't bother to dig through the final example looking for the errors, so perhaps the author did have a better argument in there but didn't bother to pursue it more aggressively.
I do have to admit that I didn't bother to dig through the final example looking for the errors, so perhaps the author did have a better argument in there but didn't bother to pursue it more aggressively.