请问如何让同一个Tthread创建的多个线程各自使用同一数组的不同元素?(20分)

  • 主题发起人 主题发起人 delphibbsme
  • 开始时间 开始时间
D

delphibbsme

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主程序中定义了一个数组,现在让创建的5个线程同时运行,各个线程用不同的参数。请问该怎么做?有可能办到吗?
 
你的意思是不是说:每个线程去取一个固定的位置,然后大家都取到的不一样?
可以调用一个同步取数据的函数,取走一个删一个。
 
还有就是如何让线程实时得到主程序的数据?
 
对第一个问题,我是这么想的:是不是定义几个线程实例,然后通过线程的create来传递参数就可以解决了?
 
对于实时得到主程序的数据,是不是可以定义一个函数,然后同步(Synchronize)一下?
 
我验证了我的想法
 
不知所云。
 
我想在不同的线程里对不同的控件的属性进行赋值,该怎么做?
 
Synchronize(GetData);
procedure GetData();
begin
ThreadData:=frmMain.Data;
end;
frmMain.Data是从串口实时得到的值。
为什么有时ThreadData=0?
 
没看明白。
 
一、
var aa:array[0..10] of string;//全局变量
线程的构造方法定义
Constructor MyThread.Create(data:PChar)
begin

end;

传递参数
Thread[0]:=MyThread.Create(PChar(@aa[0]))//线程1
Thread[1]:=MyThread.Create(PChar(@aa[1]))//线程1
二、
使用临界、互斥保护读取及修改全局数据的代码即可。
 
我觉得在线程里面尽量少的访问主线程,你第一个想法,我觉得可以在线程的类定义里面设置一个属性来实现,因为你是想从主线程那里取一个值,但是同样可以由主线程来主动给线程设置值啊.第二个问题也可以由主线程来设置数据啊, 为什么要从主线程取数据呢, 还有就是你没有说明用途, 这才是最主要的!
 
帮你顶一个,接个分,顺便发个交流群:
欢迎加入,要收群规,不诚者勿加!长期潜水者勿加!
delphi天堂:4654765
 
数组元素作为参数传给线程不就可以了
 
回复:mr.luan,用途就是要通过5个串口同时控制5个目标
 
还有就是如何让线程实时得到主程序的数据?
使用PostThreadMessage发送消息给线程,把你要发送的消息用Integer强制转换发送给线程即可
 
后退
顶部