绝大部分系统内核函数都会调用SwapContext函数,来实现线程的切换,那么这种切换是线程主动调用的。

如何中断一个正在执行的程序?

  1. 异常 比如缺页,或者INT N指令
  2. 中断 比如时钟中断

38进程与线程之线程切换----时钟中断切换

  • Windows系列操作系统: 10-20毫秒
  • 如要获取当前的时钟间隔值,可使用Win32API:
    GetSystemTimeAdjustment

38进程与线程之线程切换----时钟中断切换

线程切换的几种情况:

1)  主动调用API函数

2)  时钟中断

3)  异常处理

如果一个线程不调用API,在代码中屏蔽中断(CLI指令),并且不会出现异常,那么当前线程将永久占有CPU,单核占有率

100%  2核就是50%

相关文章:

  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
猜你喜欢
  • 2021-04-03
  • 2021-08-29
  • 2021-06-25
  • 2022-12-23
  • 2021-08-05
  • 2022-12-23
  • 2022-01-11
相关资源
相似解决方案