使用IOCP时,从两个线程安全地调用WSASend()和WSARecv()?

时间:2015-02-27 17:22:53

标签: c++ multithreading sockets iocp

根据此article,从多个线程调用WSASend()WSARecv()并不安全。但是,从两个线程同时调用WSASend()WSARecv()是否安全?

1 个答案:

答案 0 :(得分:2)

从一个线程中的套接字读取同时写入另一个线程中的同一个套接字总是安全的。涉及单独的内核缓冲区。无论您使用的是阻塞,非阻塞,重叠或IOCP I / O逻辑。

不安全的是同时从多个线程中的同一个套接字读取,或同时在多个线程中写入同一个套接字。这需要线程之间的同步,因此它们的发送/接收数据不会相互重叠。