首页
社区
课程
招聘
[求助]CPU线程调度的不解,带演示
发表于: 2015-3-25 21:23 3709

[求助]CPU线程调度的不解,带演示

2015-3-25 21:23
3709
procedure X;
begin
while 0 =0 do
begin
MessageBox(0,'X线程执行了','',0);
Sleep(5000);
end;
end;

procedure Y;
begin
  asm
  pushad
  @a: mov eax,1
  @b: mov eax,1
  @c: mov eax,1
  @d: mov eax,1
  @e: mov eax,1
  @f: mov eax,1
  @g: mov eax,1
  jmp @a
  popad
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  d:cardinal;
begin
createthread(nil,0,@x,nil,0,d);
createthread(nil,0,@Y,nil,0,d);
end;

end.

X是正常的
Y是死循环

测试发现Y在哪里死循环的话,X还是会5秒执行一次

那么当Y执行到a b c d e f g中的那个位置被打断的呢,CPU到底怎么确定打断或不打断?CPU到底怎么给时间的,我意思如果在同进程里Y没执行完,没走出去,X就不应该得到CPU!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
处理器是一条线程一条线程的执行,每条线程均匀的使用CPU时间
Y线程死了,只是它自己浪费了CPU时间,到点了还是由系统把执行权交给X线程!跟钟点房一样,不管你有没有钱,除非你线程权限比较高,不能被打断,这时候其他级别较低的线程就没权占用CPU时间了!系统会自己维护几条线程链!系统会管理好各种线程~
2015-3-25 21:37
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
单核     多核          一样?        等我有虚拟机了,再继续测试下,暂时硬盘不够容量~
2015-3-25 22:31
0
游客
登录 | 注册 方可回帖
返回
//