读书人

多线程局部变量的有关问题

发布时间: 2012-08-01 17:53:40 作者: rapoo

多线程局部变量的问题
我有一个线程类,里面有一个数组变量(在线程内定义的),在线程create的初始化数组,在exectue里赋值
我实例化这个线程(两个以上实例)后,发现这个数组变量的值混乱了,数组里有赋值的,中间有为零的(初始化状态)!如果只运行一个实例,则数组都大于零。我看书上说,线程的局部变量是跟随实例的,在我这里怎么变成公共变量了?????
为什么?怎么解决?


[解决办法]
上代码....
[解决办法]
肯定你代码错了,上代码才知道
[解决办法]
代码没控制好,别把数组传来传去的,因为他是引用类型,不是值类型,查代码吧
[解决办法]
线程局部存储TLS 要用专门的一套机制才行 如TlsAlloc...
估计你没完全搞清楚 不好乱用
[解决办法]
线程不会,关注一下,
丰富一下自己的知识面
[解决办法]
代码肯定有点问题,我这边测试正常!

Delphi(Pascal) code
type  Ta = class(TThread)    arr: array[0..1] of Byte;    constructor Create; reintroduce;    procedure Execute; override;  end;constructor Ta.Create;begin  arr[0]:=0;arr[1]:=0;  inherited Create(False)end;procedure Ta.Execute;begin  FreeOnTerminate := True;  while not Terminated do  begin  arr[0]:=1;arr[1]:=2;  OutputDebugString(PChar(format('thread%d: %d,%d', [ThreadID, arr[0],arr[1]])));  Sleep(1000);  end;end;procedure TForm1.FormCreate(Sender: TObject);begin  Ta.Create;  Ta.Create;end; 

读书人网 >.NET

热点推荐