gpt4 book ai didi

multithreading - 正在运行的线程数

转载 作者:行者123 更新时间:2023-12-03 15:00:22 25 4
gpt4 key购买 nike

我使用的是delphi 2010,有没有办法通过delphi函数或windows api了解项目的运行线程数?

最佳答案

您可以使用CreateToolhelp32Snapshot带有 TH32CS_SNAPTHREAD 标志的函数

请参阅此代码。

  uses
PsAPI,
TlHelp32,
Windows,
SysUtils;

function GetTThreadsCount(PID:Cardinal): Integer;
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
Proceed : Boolean;
begin
Result:=0;
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); //Takes a snapshot of the all threads
Proceed := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Proceed then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);//get the first Thread
while NextProc do
begin
if TThreadEntry.th32OwnerProcessID = PID then //Check the owner Pid against the PID requested
Inc(Result);
NextProc := Thread32Next(SnapProcHandle, TThreadEntry);//get the Next Thread
end;
finally
CloseHandle(SnapProcHandle);//Close the Handle
end;
end;

并以这种方式调用,使用 GetCurrentProcessId函数 检索应用程序的 PID(进程标识符)。

Var
Num :integer;
begin
Num:=GetTThreadsCount(GetCurrentProcessId);
end;

关于multithreading - 正在运行的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com