又准备改良程序了,有定时和线程安全的有关问题,大家帮忙看看。

又准备改良程序了,有定时和线程安全的问题,大家帮忙看看。。
procedure TForm1.Frame31mybtClick(Sender: TObject);
var
  qq:array of sendrecord;  
  i,K:integer;
  sxthread:array of tqqthread; //不同的任务改名
begin
 if listview1.selcount>0 then
  begin
  qq:=nil;  
  setlength(qq,listview1.SelCount);  
  setlength(sxthread,listview1.SelCount);//
  K:=0;
  for i:=0 to listview1.Items.Count-1 do
  begin
  if listview1.Items[i].Selected=true then
  begin
  qq[k].qqord:=inttostr(i);
  qq[k].qqnum:=listview1.Items.Item[i].SubItems[0];
  qq[k].url:='http://s2qqservice.act.qq.com/callback/sharewb';
  qq[k].host:='s2qqservice.act.qq.com';
  qq[k].refer:='http://s2qqservice.act.qq.com/?ADUIN='+qq[k].qqnum+'&ADSESSION='+qq[k].qqnum+'&ADTAG=CLIENT.QQ.3187_ADClick_1.0';
  qq[k].myheader:='x-flash-version: 11,0,1,152';
  qq[k].postdata:='';
  qq[k].cookie:=listview1.Items.Item[i].SubItems[3];
  if listview1.Items[i].SubItems[3]<>'' then sxthread[k]:=tqqthread.create(qq[k],'sx');//
  k:=k+1;
  end;
  end;
  qq:=nil;
  end;
end;
这是我创建线程的代码,线程根据创建函数提供识别码有很多IF选择:现在开始提问题了
1,选中几个QQ号然后点BUTTON键开始创建进程,马上我又多次点击按钮好像没什么问题,多个同名线程对象会不会造成内存泄露或其它问题啊。
2,线程执行完任务会自动关闭吧,,在网上看人越说越迷糊。
3,我现在要添加线程定时执行任务,准备用多媒体计时器,我是先创建一个数组保存数据然后定时创建线程(几十个循环担心定时精度可能差),还是先创建线程挂起然后定时执行任务呢(这个不会。。哈哈。。)。
4,我现在创建的线程delphi老是提醒我赋值给线程但未使用,我晕。。。对程序好像没影响但看着不爽。咋解决。
5,还有啥问题没想起。。晕。。。

------解决方案--------------------
按照选中数量创建线程,如果数量多的话,就太暴力了

通常,主进程创建QQ列表,
按照CUP数量创建线程池(一般2倍CPU数量即可,多了效率也不一定高),
线程用临界区方法,取主进程的QQ[i],直到QQ取完,执行结束
------解决方案--------------------
1.没有同名之说,每次创建都是不同的,造成冲突的一般是访问了VCL控件,或者是访问了公共变量,,,等等
2.是的,线程执行完自己停止,或者可以在Create时加一句FreeOnTerminate:=True;
3.定时执行可以用Time,创建时先挂起,时间到即启动;创建时先挂起Create时参数为True;创建即执行是False;
4.那是可能定义了变量,但未使用.删除就是了