关于多线程同步的问题------------〉〉〉〉〉〉〉〉〉〉〉

stanely 2002-10-17 06:38:19
多线程调用同一个函数(一个全局函数,不是对象的函数),函数内部的局部变量会不会受到影响?

比如:

procedure test(filename:string);
var
i:integer;
sl:tstringlist;
begin
i:=0;
sl:=tstringlist.create;
randomize;
for i:=1 to 10000 do
begin
sl.add(inttostr(i));
sleep(random(100));
end;
sl.savetofile(filename);
sl.free;
end;

当2个线程调用这个函数的时候,如果传入不同文件名,到执行完后,分别看两个文件,各自显示的是不是从1到10000连续递增的数??
...全文
31 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxjh 2002-10-18
  • 打赏
  • 举报
回复
不好意思,没仔细看,对于不同的线程,有各自的堆栈,是不会影响到你的局部变量的,我的看法
xzgyb 2002-10-18
  • 打赏
  • 举报
回复
应该不会受到影响,线程都有自己的堆栈,局部变量放在堆栈中
不会受到影响,
线程间共享的数据是堆,数据段中的数据
我不怎么明白,先灌这些吧.
stanely 2002-10-18
  • 打赏
  • 举报
回复
感谢各位帮助!
结账!
Banned 2002-10-17
  • 打赏
  • 举报
回复
应该是吧,对于两个线程来说,虽然是同样的代码(在这里,test函数,
只有局部变量),但是却是在不同的数据空间中运行的。
stanely 2002-10-17
  • 打赏
  • 举报
回复
麻烦各路过客不要只看标题,请看清题目内容,谢谢!
wxjh 2002-10-17
  • 打赏
  • 举报
回复
应该使线程能够能够同步,有两种方法,在同一个进程中,使用临界区,进行控制同步问题

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧