W
whaoye
Unregistered / Unconfirmed
GUEST, unregistred user!
大家看一看,
如果我生成几个线程同时做同一个事情,
例如:
procedure threadfun;stdcall;
begin
//code here
end;
procedure button1click(sender:tobject);
var
i:integer;
thid:dword;
begin
for i:=1 to 10do
createthread(nil,0,@threadfun,nil,thid);
end;
象这个样子经常不能产生,为什么呢?
但是,如果我改为
for i:=1 to 10do
begin
createthread(nil,0,@threadfun,nil,thid);
sleep(100);
end;
就可以,为什么呢,
是不是一个线程还没有初始化就不能执行下面的for循环?
那怎么解决呢,
是不是要在线程函数里面加如等待函数,
如果我生成几个线程同时做同一个事情,
例如:
procedure threadfun;stdcall;
begin
//code here
end;
procedure button1click(sender:tobject);
var
i:integer;
thid:dword;
begin
for i:=1 to 10do
createthread(nil,0,@threadfun,nil,thid);
end;
象这个样子经常不能产生,为什么呢?
但是,如果我改为
for i:=1 to 10do
begin
createthread(nil,0,@threadfun,nil,thid);
sleep(100);
end;
就可以,为什么呢,
是不是一个线程还没有初始化就不能执行下面的for循环?
那怎么解决呢,
是不是要在线程函数里面加如等待函数,