首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WaitForMultipleObjects和64个线程

WaitForMultipleObjects和64个线程
EN

Stack Overflow用户
提问于 2017-08-12 22:04:12
回答 1查看 417关注 0票数 2

根据微软的文档,MAXIMUM_WAIT_OBJECTS64 (等待句柄的最大值),但是由于某种原因,有时(因为随机的) WaitForMultipleObjects返回WAIT_FAILED ($FFFFFFFF),GetLastError返回ERROR_INVALID_HANDLE (6)。我做错了什么?

代码语言:javascript
复制
procedure TForm1.Button1Click(Sender: TObject);
var ArrayOfHandles:array of THandle;
    Threads,x:byte;
    ReturnValue:Cardinal;
begin

  Threads:=64;
  SetLength(ArrayOfHandles,Threads);

  for x:=0 to Threads-1 do
  begin
    WorkerThread:= TWorkerThread.Create(True);
    ArrayOfHandles[x]:=WorkerThread.Handle;
    WorkerThread.FreeOnTerminate:=true;
    WorkerThread.Priority := tpNormal;
    WorkerThread.Resume;
  end;

  ReturnValue:=WaitForMultipleObjects(Threads,@ArrayOfHandles[0],false,INFINITE);
  ShowMessage('ReturnValue='+IntToStr(ReturnValue)+#13+'GetLastError='+IntToStr(GetLastError));

end;

procedure TWorkerThread.Execute;
begin

  sleep( Random(1000) );

end;
EN

回答 1

Stack Overflow用户

发布于 2017-08-12 22:10:02

好的。我是个笨蛋。这一定是假的!

代码语言:javascript
复制
WorkerThread.FreeOnTerminate:=false;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45651142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档