在使用IOCP时,从两个线程安全地调用WSASend()和WSARecv()
Is calling WSASend() and WSARecv() from two threads safe when using IOCP?
基于本文,从多个线程调用WSASend()
或WSARecv()
是不安全的。但是,从两个线程同时调用WSASend()
和WSARecv()
安全吗?
从一个线程中的套接字读取,同时向另一个线程的同一套接字写入总是安全的。涉及单独的内核缓冲区。无论您使用的是阻塞、非阻塞、重叠还是IOCP I/O逻辑。
不安全的是在多个线程中同时从同一个套接字读取,或者在多个螺纹中同时向同一套接字写入。这需要线程之间的同步,以便它们发送/接收的数据不会相互重叠。
相关文章:
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 如果两个线程相互依赖,则 cpp 线程连接应使用连接导致死锁
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 简单使用 std::atomic 在两个线程之间共享数据
- 如何在Qt中合并/追加/添加两个用于线程的模型?
- 如何从两个平行的线程中停止一个线程
- 如何使用 pthreads 以正确的方式设置两个线程之一的优先级
- 曼德布洛特 从一个线程被反复使用变为两个线程
- C++ 两个线程,共享几个整数变量
- 如何正确同步这两个线程?
- Qt多线程:如何更新两个QLabel?
- 两个线程尝试将一些数据读/写到数据库中表的同一行中
- 两个线程的公共资源 - 同步足够吗?
- Qt 线程两个参数
- 我们是否需要每个线程多个io_service用于具有单个接受器的线程 boost::asio 服务器
- 将一条线从两个点延伸到一定长度
- C++11线程:多个线程正在等待一个条件变量
- 多线程两个功能使用openMP
- 单线程两个进程