c - 解除阻塞连接到套接字会导致上下文切换吗?

标签 c winapi sockets winsock

我正在使用 winsock 并在非阻塞套接字上调用 connect。当 CPU 被其他进程占用时,我偶尔会在函数返回之前看到一些延迟(最多 200 毫秒)。据我所知,非阻塞套接字上的 connect 应该立即返回,但也许 connect 会导致上下文切换,并且由于 CPU 正在努力工作,它需要一段时间才能返回我的线程再次获得 CPU 时间并退出函数。

我知道(或者至少相当确定)阻塞套接字上的 connect 会导致上下文切换,但是非阻塞套接字上的 connect 会导致上下文切换吗?

最佳答案

根据定义,非阻塞调用不会导致上下文切换。但是,可能会立即发生上下文切换。

我不确定你在这里的意思。 “据我所知,非阻塞套接字上的连接应该立即返回。”一方面,是的,无论连接是否完成,后续代码行都会执行,因此从这个意义上讲,它会立即返回。如果您的意思是它会立即返回,因为在它返回之前不会发生上下文切换,那您就错了。

关于c - 解除阻塞连接到套接字会导致上下文切换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/443128/

相关文章:

c - 我如何使用指针修改矩阵

c - 在 exe 的入口点周围添加 nop

winapi - 获取使用 LoadLibrary ("MyDll.dll"加载的 dll 的路径)

c++ - C++ 服务器 Linux 计算机上的段错误 - 适用于 Mac

c++ - 套接字服务器针对某些请求返回 tcp 错误 [RST, ACK]

c - 如何防止scanf导致C中的缓冲区溢出?

c++ - 如何使用 tpl 序列化 "std::string"

c - 这段代码需要优化吗?我写这段代码没有任何引用,只了解数据结构

c# - 帮助使用 SystemParametersInfo

sockets - NestJs套接字Io工作在不同的端口上,但不能工作在同一个端口上