gpt4 book ai didi

c - C中的非阻塞写入

转载 作者:行者123 更新时间:2023-11-30 19:11:58 25 4
gpt4 key购买 nike

我在网上读过一些关于socket编程的资料。默认情况下,write() 是阻塞的。在某些 Material 中,write() 仅在套接字缓冲区已满时阻塞。其他一些 Material 说 write() 会被阻塞,直到用户缓冲区中的所有数据都移动到系统缓冲区,这意味着 write() 也会阻塞,如果有没有足够的空间来放置数据。我想知道如果 write() 设置为阻塞,哪个语句是正确的。

最佳答案

In some materials, write() only blocks when socket buffer is full. Some other materials say write() is blocked until all the data in the user buffer has been moved to the system buffer, which means write() will also block if there is not enough space for the data to place.

我不清楚这些实际上说的是不同的东西。

首先,一个所说的“系统缓冲区”就是另一个所说的“套接字缓冲区”,但它们是同一个东西。

其次,当第一个语句说“write() 仅在套接字缓冲区已满时阻塞”时,应将其解释为“write() 仅在写入操作溢出(系统)缓冲区时阻塞”。这与“write() 被阻塞,直到用户缓冲区中的所有数据都已移至系统缓冲区”相同;只是一种说法是条件将导致 write() 阻塞,另一种说法是一旦条件变为 false,阻塞就会停止。这并不矛盾。

关于c - C中的非阻塞写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375289/

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