我正在使用 C++ 和 Winsock 创建 TCP 客户端。 我创建了一个仅包含消息的窗口,它将处理 WM_SOCKET 消息,我使用 WSAAsyncSelect 注册了该消息。
我的问题如下:我需要从另一个线程(我的应用程序的 GUI 线程)发送数据,我可以从该线程安全地调用“发送”函数吗?或者我是否需要使用一些锁定接口(interface)(互斥锁) )以便发送数据?
最佳答案
从与接收线程不同的线程发送应该没有问题。
对于数据报套接字,您甚至可以让多个线程同时发送(消息将交错但不会混合)。
对于包括 TCP 在内的流套接字,多个并发发送方可能会混合数据,因此建议一次仅使用一个发送线程。但即使有一个发送线程限制,它也不必与接收线程相同。
关于c++ - WSAAsync从另一个线程选择并发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310260/