线程遇到for循环时,CPU切换了,会再次从头执行for循环吗?

当线程1在执行for循环时,执行到一半,失去了CPU的执行权,此时再次获取到CPU的执行权时会从上次运行的位置继续往后执行呢还是重头开始再次执行一遍。
这里指的for循环是

for (;;) {
 1    int a = b+1;
 2    //执行到2处失去CPU执行权
 3
}
阅读 3.2k
4 个回答

所谓 CPU 切换你应该指的是 CPU 分片导致的进程/线程上下文切换吧?

把这个问题补全你应该就明白了。

既然线程运行状态是有上下文状态的,那么线程切换当然不会影响 for 循环了,继续进行呗,不会重头的。

感觉会继续执行,程序计数器记录着执行到哪一行

怎么想的重新运行...
先不说程序怎么感知到CPU切换
就算能感知,每次切回来还要要把寄存器、计数器等环境全部重置到循环开始的状态?

不会 有程序计数器,cpu执行过的数据也会存起来,下次继续执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题