View Single Post
  #11  
Old 18-08-2021, 11:02
DiCaPrIo DiCaPrIo is offline
Registered User
 
Join Date: Apr 2017
Location: Don't Know
Posts: 48
Thanks: 90
Thanked 49 Times in 30 Posts
DiCaPrIo is on a distinguished road
Quote:
Originally Posted by Masquerade View Post
Is there a way to detect the amount of CPU threads / cores there are and do something accordingly?

Eg.

if CPU_THREADS = 6 then
begin
do_stuff
end else begin
do_other_stuff
end;

Asking because some multithreading tools crash when dealing with 6 or 12 threads.
Code:
function GetSysCores(): Integer;
var
  WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet := WbemServices.ExecQuery('Select NumberOfCores from Win32_Processor');
  WbemObject := WbemObjectSet.ItemIndex(0);
  Result := WbemObject.Properties_.Item('NumberOfCores').Value;
  WbemLocator:=Unassigned;
  WbemServices:=Unassigned;
  WbemObjectSet:=Unassigned;
  WbemObject:=Unassigned;
end;

function GetSysThreads(): Integer;
var
  WbemLocator, WbemServices, WbemObjectSet, WbemObject: Variant;
begin;
  WbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  WbemServices := WbemLocator.ConnectServer('localhost', 'root\CIMV2');
  WbemObjectSet := WbemServices.ExecQuery('Select NumberOfLogicalProcessors from Win32_Processor');
  WbemObject := WbemObjectSet.ItemIndex(0);
  Result := WbemObject.Properties_.Item('NumberOfLogicalProcessors').Value;
  WbemLocator:=Unassigned;
  WbemServices:=Unassigned;
  WbemObjectSet:=Unassigned;
  WbemObject:=Unassigned;
end;
Reply With Quote
The Following User Says Thank You to DiCaPrIo For This Useful Post:
Masquerade (18-08-2021)