-
-
[求助]CPU线程调度的不解,带演示
-
发表于:
2015-3-25 21:23
3705
-
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!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!