线程函数声明如下:
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;//
发现第一个线程能成功运行,第二个线程跟踪调试时,发现传递进去的参数是乱码,不
知怎么会事?难道一个线程函数只能供一个线程使用吗?
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;//
发现第一个线程能成功运行,第二个线程跟踪调试时,发现传递进去的参数是乱码,不
知怎么会事?难道一个线程函数只能供一个线程使用吗?
当第二个子线程创建时,两个子线程同时抢占cpu,假如两个子线程共用一个
线程函数时,就会导致内存资源冲突。