Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.10.2008, 10:00
Space Space вне форума
Прохожий
 
Регистрация: 17.10.2008
Сообщения: 6
Репутация: 10
По умолчанию Как определить число ядер и их загрузку?

Как определить число ядер процессора и их загрузку? Какие есть для этого функции?
Ответить с цитированием
  #2  
Старый 27.10.2008, 05:41
Space Space вне форума
Прохожий
 
Регистрация: 17.10.2008
Сообщения: 6
Репутация: 10
По умолчанию

Есть ли хоть что-нибудь по многоядерности?
Ответить с цитированием
  #3  
Старый 28.10.2008, 10:21
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Функция API GetSystemInfo позволяет узнать несколько параметров процессора. Функция имеет вид:

procedure GetSystemInfo(var lpSystemInfo: TSystemInfo); stdcall;

Функция заполняет поля структуры lpSystemInfo, в частности, там есть поля:

* dwActiveProcessorMask - битовая маска, представляющая процессоры, установленные в системе (каждый бит соответствут процессору, например, в двухпроцессорной системе установлено два младших бита)
* dwNumberOfProcessors - количество процессоров в системе
* dwProcessorType - тип процессора
* wProcessorLevel, wProcessorRevision - характеристики процессора (их трактовка зависит от типа)

При этом следует учесть, что процессоры с технологией HT считаются как два процессора (при условии, что включена поддержка HT)


В мультипроцессорной системе (на базе нескольких процессоров или процессора с технологией HyperThreading) можно указать системе, на каком процессоре рекомендуется выполнять поток. Реализуется это при помощи функции API SetThreadIdealProcessor:

function SetThreadIdealProcessor(hThread: THandle; dwIdealProcessor: DWORD): BOOL;

Thread - Handle потока, для текущего потока приложения его можно узнать через GetCurrentThread
dwIdealProcessor - номер процессора (отсчет идет с 0)

Вот пример как выполнить поток на нужном процессоре

begin
// Выбор процессора
SetThreadIdealProcessor(GetCurrentThread, 1);
// Мертвый цикл
WHILE TRUE DO ;
end;
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025