下面的例子:我加了synchronize()也可以正常运行,不加也可以正常动行(至少看起来正常),请问如果我不加synchronize会怎么样?最严重可导致什么后果?
procedure th.Execute;
var
  i:integer;
begin
  for i:=0 to 10 do
  begin
    inc(i);
    //synchronize(giveanswer); //???????????????????????
    giveanswer         //??????????????????????                                       
  end;
end;procedure th.giveAnswer;
begin
  form1.edit1.text:=inttostr(Answer)
end;

解决方案 »

  1.   

    >>如果我不加synchronize会怎么样?
    正常是不會有問題的, 特別是對單CPU來說>>最严重可导致什么后果?
    應該是非法訪問吧, 程序出了一個出錯的提示對話框
      

  2.   

    不管多少个cpu,只要是多线程就要同步,可以用其他同步方法,但是一定要同步,除非你确实知道你在干什么最严重的后果就是你的软件不但是完完全全没用的东西,而且是影响用户心情地东西(负资产)
      

  3.   

    ……推荐你看看猛禽的TThread类的分析。