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

我知道(至少可以肯定地说)阻塞套接字上的connect会导致上下文切换,但是非阻塞套接字上的connect会导致上下文切换吗?

最佳答案

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

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

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

10-09 13:43