gpt4 book ai didi

c++ - 在来自多个线程的阻塞套接字上使用 send()

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:26 25 4
gpt4 key购买 nike

我读到您不应该在多线程的阻塞套接字上使用 send(),但我不知道为什么!如果我想从多个线程使用 send(),我可以做些什么来允许它吗?

我正在使用 Windows。

最佳答案

根本原因是同步 I/O 函数使用句柄对象(套接字被实现为句柄)来跟踪 I/O 是否完成。

结果是,如果您尝试同时从多个线程将 send() 发送到同一个套接字,则 send() 可能会 (a) 挂起或 (b) 在 I/O 实际完成之前退出,从而导致灾难性的结果.

您可以使用临界区来防止发送重叠,或​​者指定线程从队列中读取要发送的数据。

请注意,这仅适用于发送到相同 套接字的情况。同时发送到不同套接字是可以的。

关于c++ - 在来自多个线程的阻塞套接字上使用 send(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com