大循环和cpu使用率问题(10分)

  • 主题发起人 主题发起人 muyixin
  • 开始时间 开始时间
M

muyixin

Unregistered / Unconfirmed
GUEST, unregistred user!
我再按钮事件中执行这么一个循环
for i:=1 to 100000 do
begin
for j:=1 to 100000 do
begin
MyArray[j]:=i+j;
end;
end;
在点击了按钮后 窗口就拖不动了 cpu使用达到了100% 只有等到其循环结束 才能回复正常 该怎么办呢 是不是要用线程来解决?
 
如果只是为了窗口能拖动,
可以在外成循环加一个application.processmessage.
 
如果这个也没用的话 只能用线程了
for i:=1 to 100000 do
begin
for j:=1 to 100000 do
begin
Application.ProcessMessages;
MyArray[j]:=i+j;
end;
end;
 
我也遇到过这种情况,不知道怎么解决。好像是由于这种循环在执行过程中由于其不断的执行系统提高了了其线程的优先级导致的吧?高手们说说看。
 
for i:=1 to 100000 do
begin
for j:=1 to 100000 do
begin
MyArray[j]:=i+j;
sleep(10);
end;
end;
 
遇到一个有趣的问题,不知道楼主MyArray怎么定义的,我定义如下:
MyArray: array[1..100000, 1..100000] of Integer;
编译时报错:Data type too large: exceeds 2 GB;
 
我也想知道2GB 数据问题
 
啊 不好意思 我也不知道2GB的问题 我只是想举例说大循环 就随便写了个大一点的数据
to nicai_wgl
sleep 我试过了 cpu到不是100%了 可运行更慢了 一切换窗口 在切换回来 就变样了
 
接受答案了.
 
后退
顶部