Windows でネットワークプログラミングを始めました。
Linux ではちょっとやっていたことがあります。

マルチスレッドで処理をしようと考えているのですが、Winsock のいくつかの関数がスレッドセーフなのかどうかがよくわかりません。
1つのスレッドで 1つの socket を扱っており、例えば recv の後で WSAGetLastError を呼び出しているのですが、
WSAGetLastError はスレッドセーフなのでしょうか。
スレッドセーフではない場合、どう対処するものなのでしょうか。

gethostbynameなどはスレッドセーフじゃないという情報があったので、mutex を使って排他しています。
しかしながら recv から WSAGetLastError までを排他すると、マルチスレッドのメリットが無くなってしまうんじゃないかと思う次第です
(この socket はブロックモードです)。