线程函数声明如下:
procedure ProcMonThreadLoop(TwoProcs:pchar);stdcall;
创建多线程如下:
procedure ProcessMonitor;
var
  i:dword;
  TwoProcs1,TwoProcs2:pchar;
begin
  if fileexists(g_WinDir+'\aa.exe') then
  begin
    TwoProcs1:=pchar(g_WinDir+'\aa.exe'+'!@#'+g_SysDir+'\bb.exe');
    createThread(nil,0,@ProcMonThreadLoop,TwoProcs1,0,i);
  end;
  if fileexists(g_SysDir+'\cc.exe') then
  begin
    TwoProcs2:=pchar(g_SysDir+'\cc.exe'+'!@#'+g_SysDir+'\dd.exe');
    createThread(nil,0,@ProcMonThreadLoop,TwoProcs2,0,i);
  end;
end;//
发现第一个线程能成功运行,第二个线程跟踪调试时,发现传递进去的参数是乱码,不
知怎么会事?难道一个线程函数只能供一个线程使用吗?

解决方案 »

  1.   

    ProcMonThreadLoop的实现代码呢。。难道一个线程函数只能供一个线程使用 // 不会呀。 可以多个的你跟踪的时候 可能就有问题了 你将你要跟踪的变量,数据写到文件中去 看看
      

  2.   

    问题已经解决!当主线程创建一个子线程时,需要分配时间片给它,否则
    当第二个子线程创建时,两个子线程同时抢占cpu,假如两个子线程共用一个
    线程函数时,就会导致内存资源冲突。