+ -
当前位置:首页 → 问答吧 → 新人搞多线程,把我搞晕乎了,大虾支支招吧,谢谢了

新人搞多线程,把我搞晕乎了,大虾支支招吧,谢谢了

时间:2011-11-23

来源:互联网

这个问题从昨天晚上一直弄的到现在还没有解决,郁闷的很,解决不了睡觉都不踏实,先说问题哈:
implementation
var
Ghwnd : Thandle; //全局变量


procedure TTestThread.Execute; //线程过程


procedure diaoyongxiancheng();

TTestThread.Create(false); //第一次调用


TTestThread.Create(false); //第二次调用


现在问题出来了,第二次调用后,只有第二次调用的那个线程的变量Ghwnd是有值的,第一次调用的那个线程中的变量Ghwnd变成空的了。

书上和网上不都说在多个线程中,每个线程的变量不会相互影响吗,为什么我这样弄会出现这种情况呢,还请老鸟们指点一下哈,解决了好让我去睡觉。。。。非常谢谢~~!!

作者: a80141783   发布时间: 2011-11-23

看线程先从 API CreateThread 看起,

delphi 那个封装的类先不要研究

作者: warrially   发布时间: 2011-11-23

线程里面定一个变量,创建时记录一下这个全局变量

作者: dmfssdut   发布时间: 2011-11-23

‘warrially’你的意思是我要用多线程的话是不是暂时先用 API那种多线程方法?等后面再研究delphi 那个封装的类?

作者: a80141783   发布时间: 2011-11-23

引用 2 楼 dmfssdut 的回复:
线程里面定一个变量,创建时记录一下这个全局变量


是不是这样,在线程里面这样做:
var
linshi:Thandle;
然后再
linshi:=Ghwnd;
请问是这样吗?

作者: a80141783   发布时间: 2011-11-23

引用 4 楼 a80141783 的回复:
引用 2 楼 dmfssdut 的回复:
线程里面定一个变量,创建时记录一下这个全局变量


是不是这样,在线程里面这样做:
var
linshi:Thandle;
然后再
linshi:=Ghwnd;
请问是这样吗?

对的,同一进程的线程使用同一存储空间,所以全局变量可以被所有线程修改。

作者: lhylhy   发布时间: 2011-11-23

为什么不用DELPHI的TThread类?

作者: wonfon   发布时间: 2011-11-23