一个线程函数供多个createThread()使用,这样设计有没有错?

baiyongchun 2004-10-09 09:03:56
线程函数声明如下:
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;//
发现第一个线程能成功运行,第二个线程跟踪调试时,发现传递进去的参数是乱码,不
知怎么会事?难道一个线程函数只能供一个线程使用吗?
...全文
108 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
baiyongchun 2004-10-09
  • 打赏
  • 举报
回复
问题已经解决!当主线程创建一个子线程时,需要分配时间片给它,否则
当第二个子线程创建时,两个子线程同时抢占cpu,假如两个子线程共用一个
线程函数时,就会导致内存资源冲突。
beyondtkl 2004-10-09
  • 打赏
  • 举报
回复
ProcMonThreadLoop的实现代码呢。。

难道一个线程函数只能供一个线程使用 // 不会呀。 可以多个的

你跟踪的时候 可能就有问题了 你将你要跟踪的变量,数据写到文件中去 看看
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-10-09 09:03
社区公告
暂无公告