WSAAsyncSelect 从另一个线程发送

WSAAsyncSelect and send from another thread

我正在使用 C++ 和 Winsock 创建一个 TCP 客户端。 我创建了一个仅消息 window,它将处理我使用 WSAAsyncSelect 注册的 WM_SOCKET 消息。

我的问题如下:我需要从另一个线程(我的应用程序的 GUI 线程)发送数据,我可以从那个线程安全地调用 'send' 函数吗,或者我是否需要使用一些锁定接口(互斥锁)以发送数据?

从接收线程的不同线程发送应该没有问题。

对于数据报套接字,您甚至可以让多个线程同时发送(消息将交错但不会混合)。

对于包括 TCP 在内的流套接字,多个同时发送方可能会混合数据,因此建议一次只发送一个线程。但即使有一个发送线程限制,它也不必与接收线程相同。