Using WSAAsyncSelect there's no need for any thread creation.

Other methods require it, however.

As for thread-per-connection (with blocking sockets I assume): this method doesn't scale, so it's not perhaps the best choice. It is easy to do, however.