11.05.2008, 11:10 | #1 |
Новичок
Регистрация: 16.03.2008
Сообщений: 20
|
Потоки
Имеется 2 потока. Как вручную распределить эти птоки по разным ядрам в Delphi?
|
11.05.2008, 12:56 | #2 |
Red Machine!
Регистрация: 18.07.2004
Сообщений: 1,401
|
А этим разве не операционая система занимается?
__________________
1: Андрей, я тебя ненавижу! 2: Хм, надо же. А кого ненавижу я? А давай угадывать? |
11.05.2008, 17:45 | #3 |
Новичок
Регистрация: 16.03.2008
Сообщений: 20
|
потоки
|
12.05.2008, 13:30 | #4 |
Программист
|
Погугли инфу о WMI.
Про распределение по разным ядрам если не задаешь явно тебя не обманули. Как ОСи захотелось, так она и сделала. Однажды наблюдал картину - прога грузит проц задачей где-то на пол часа. Запускаешь диспетчер задач, и видишь - от запуска к запуску проц то наполовину занят, то целиком. |
19.05.2008, 17:05 | #5 |
Новичок
Регистрация: 17.08.2004
Сообщений: 780
|
ОС вообще старается загружать процессоры равномерно, в зависимости от колчиства потоков и их загрузки. Для более тонкой настройки можно использовать вот эти функции:
DWORD SetThreadIdealProcessor(HANDLE hThread, DWORD dwIdealProcessor); Можно задать на каком процессоре тебе хотелось-бы выполнять указанный тред (это необязательное условие, а настойчивое пожелание. Для обязательного условия смотреть на следующие две функции) DWORD_PTR SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask); На каких процессорах тебе хотелось-бы выполнять поток (какой именно процессор, из указанных, будет выбирать ОС) BOOL SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMask); На каких процессорах будут выполнятся все потоки процесса (какой именно процессор, из указанных, будет выбирать ОС)
__________________
Одним фломастером можно раскрасить почти все. Двумя - вообще все! Последний раз редактировалось COBEHOK; 19.05.2008 в 20:42. |
|