我正在使用 winsock 并在非阻塞套接字上调用 connect
。当 CPU 被其他进程占用时,我偶尔会在函数返回之前看到一些延迟(最多 200 毫秒)。据我所知,非阻塞套接字上的 connect
应该立即返回,但也许 connect
会导致上下文切换,并且由于 CPU 正在努力工作,它需要一段时间才能返回我的线程再次获得 CPU 时间并退出函数。
我知道(或者至少相当确定)阻塞套接字上的 connect
会导致上下文切换,但是非阻塞套接字上的 connect
会导致上下文切换吗?
最佳答案
根据定义,非阻塞调用不会导致上下文切换。但是,可能会立即发生上下文切换。
我不确定你在这里的意思。 “据我所知,非阻塞套接字上的连接应该立即返回。”一方面,是的,无论连接是否完成,后续代码行都会执行,因此从这个意义上讲,它会立即返回。如果您的意思是它会立即返回,因为在它返回之前不会发生上下文切换,那您就错了。
关于c - 解除阻塞连接到套接字会导致上下文切换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/443128/