delphi在多线程中关于全局变量在过程或函数的问题

mhbovo 2008-05-24 03:20:29
我在一个线程对象中声明了一个全局变量 i :Integer,但是在线程函数中改变它的值,可是再次取其值时,它的值就会变成0
请问有没有人遇到过这样的问题呀。

要怎么办才能保证它的值不变成0.
...全文
261 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
blazingfire 2008-05-24
  • 打赏
  • 举报
回复
i是全局变量,不会的。加Synchronize中是表示在更i的时候,即使有多个线程更新i的时候,也"必须排队一个个来",不能一窝蜂的都去更新i
mhbovo 2008-05-24
  • 打赏
  • 举报
回复
请问如果这个变量在多个线程对象中会重复吗?
blazingfire 2008-05-24
  • 打赏
  • 举报
回复
如下试试:

type
TMyThread = class(TThread)
private
NewValue: Integer;
procedure SetValue;
protected
procedure Execute;
end;

implementation

var
i: Integer;

{ TMyThread }

procedure TMyThread.Execute;
begin
NewValue := 10;
Synchronize(SetValue);
end;

procedure TMyThread.SetValue;
begin
i := NewValue;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧