首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解除阻塞连接到套接字是否会导致上下文切换?

问解除阻塞连接到套接字是否会导致上下文切换?
EN

Stack Overflow用户
提问于 2009-01-14 14:28:34
回答 3查看 840关注 0票数 1

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

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

EN

回答 3

Stack Overflow用户

发布于 2009-01-15 03:16:04

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

我不明白你说的是什么意思。据我所知,非阻塞套接字上的连接应该立即返回。一方面,是的,无论连接是否完成,后续的代码行都将执行,因此在这种意义上,它将立即返回。如果你的意思是它会立即返回,因为在它返回之前不会发生上下文切换,那么你就错了。

票数 1
EN

Stack Overflow用户

发布于 2009-01-15 04:23:38

上下文切换在任何时刻都是可能的,无论是非阻塞连接、阻塞连接,还是在连接之前/之后的任何时间。只是当连接过程还没有完成时,非阻塞连接可能会返回。

在任何现代操作系统中,在正常程序运行的任何阶段都可以进行上下文切换。永远不能保证某段代码不会中断运行。(只有那些对系统非常关键的人才会获得这样的特权)

票数 1
EN

Stack Overflow用户

发布于 2009-01-15 10:51:36

此外,这个调用需要深入到内核,这已经意味着需要花费一些时间。正如其他人所指出的:上下文切换可以在任何时候发生。您可以使用一些技巧(如使用稍高的优先级等),但事实是,使用非实时操作系统时,您无法保证分配的时间片、完成某些操作所需的时间等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/443128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档