Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.03.11;
Скачать: [xml.tar.bz2];

Вниз

потоки и ядра   Найти похожие ветки 

 
toropoff   (2011-11-29 19:51) [0]

подскажите пожалуйста,
сделал например несколько потоков.
как определить сколько ядер в процессоре и как
бы разнести их выполнение на разные ядра?
прошу не пинать, полный нуб.


 
Palladin ©   (2011-11-29 20:00) [1]

Зачем тебе это? Система сама разберется.


 
MBo ©   (2011-11-29 20:00) [2]

SetThreadAffinityMask и далее по ссылкам


 
Dennis I. Komarov ©   (2011-11-29 20:01) [3]

Оставь сию работу окнам, они вряд ли хуже с этим справятся...


 
Rouse_ ©   (2011-11-29 20:03) [4]

Полноценно разнести не получится, можно лишь указать системе что для определенной нити желательно использовать определенное ядро через SetThreadAffinityMask, ну а дальше, как уже сказали - система сама разберется.


 
toropoff   (2011-11-29 20:11) [5]

примерно понял, спасибо!


 
Сергей М. ©   (2011-11-29 20:44) [6]

Как пример:

var
 pam, sam: DWord;
 FSubThreadsCount: Integer;
..

procedure TNeuralNetExploit.CreateSubThreads;

function GetNonZeroBitCount(Mask: DWord): Integer;
const
 m1 = $55555555;
 m2 = $33333333;
 m3 = $0F0F0F0F;
begin
 Mask := (Mask and m1) + ((Mask shr 1) and m1);
 Mask := (Mask and m2) + ((Mask shr 2) and m2);
 Mask := (Mask + (Mask shr 4)) and m3;
 Result := (Mask + (Mask shr 8) + (Mask shr 16) + (Mask shr 24)) and $3F;
end;

var
 i,n: Integer;
begin
 FSubThreadsCount := GetNonZeroBitCount(pam);
 SetLength(FSubThreads, FSubThreadsCount);
 SetLength(FSubThreadsEvents, FSubThreadsCount);
 i := 0;
 n := 1;
 while i < FSubThreadsCount do
   begin
     while (n and pam) = 0 do
       n := n shl 1;
..
     FSubThreads[i] := TNNComputeThread.Create(..);
     with FSubThreads[i] do
       begin
         SetThreadAffinityMask(Handle, n);
         ..
       end;
     n := n shl 1;
     Inc(i);
   end;
end;
..
initialization
 GetProcessAffinityMask(GetCurrentProcess, pam, sam);
 SetProcessAffinityMask(GetCurrentProcess, sam);
 GetProcessAffinityMask(GetCurrentProcess, pam, sam);

end.


Разбирайся.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.03.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.003 c
2-1321812059
spbstu_helpme
2011-11-20 22:00
2012.03.11
delphi численное интегрирование


15-1321899084
Rouse_
2011-11-21 22:11
2012.03.11
Напомните плз автора Парадокса


15-1319910376
KilkennyCat
2011-10-29 21:46
2012.03.11
налог на носители


1-1288366250
Vasena
2010-10-29 19:30
2012.03.11
Полиморфизм+"множественное наследование"


15-1321220394
KilkennyCat
2011-11-14 01:39
2012.03.11
TCanvas &amp; HTML





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский