Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

Потоки и процессоры   Найти похожие ветки 

 
Woolen   (2003-10-24 13:19) [0]

Хотелось бы узнать. Поток всегда работает на том процессоре, на который его изначально определила операционка или он может в процессе работы "перейти" на другой процессор?


 
clickmaker ©   (2003-10-24 13:26) [1]

API - SetThreadIdealProcessor


 
Rouse_ ©   (2003-10-24 13:26) [2]

Безусловно может, Рихтер об этом писал.

Желаю успехов


 
Woolen   (2003-10-24 13:34) [3]


> API - SetThreadIdealProcessor

Это я знаю, но ни слова там не сказано о том, можно это вызвать во время исполнения потока. Или идеальный процессор должен назначаться до того, как поток начал исполняться?


 
Woolen   (2003-10-24 13:38) [4]


> Безусловно может, Рихтер об этом писал.

Именно в процессе работы потока он может перейти на другой процессор? Это действительно безусловно? То есть, какая-то работа выполняется на одном процессоре, потом ось сохраняет состояние регистров, восстанавливает его на другом процессоре и поток как ни в чем не бывало продолжает свою работу? Я правильно понял и ничего не напутал?


 
Rouse_ ©   (2003-10-24 13:51) [5]

Хм, честно говоря не помню про "В процессе работы" давно уже листал... кажется нет.

Желаю успехов


 
Woolen   (2003-10-24 14:01) [6]


> не помню про "В процессе работы"

А я об этом и спрашиваю


 
Rouse_ ©   (2003-10-24 14:09) [7]

Значит про "В процессе работы" там ничего не сказано но судя по всему, нельзя. Поток привязывается к определенному процессору до момента его пробуждения (не создания). Для назначения потоку процессора лучше использовать функцию SetThreadAffinityMask и только в случае конфликтов между потоками (читай главу 7) использовать SetThreadIdealProcessor.

Желаю успехов


 
Игорь Шевченко ©   (2003-10-24 15:29) [8]


> Значит про "В процессе работы" там ничего не сказано но
> судя по всему, нельзя


Можно, но ни к чему. При переходе неизбежно должна быть очищена как кеш L2, так и TLB, операция эта не быстрая, так что нафига, спрашивается ?


 
Woolen   (2003-10-24 15:53) [9]

Ясно, спасибо. Тогда вопрос такой. Достаточно ли указания одного процессора в SetThreadAffinityMask для того, чтобы поток на нем запустился?


 
Rouse_ ©   (2003-10-24 16:15) [10]

В SetThreadAffinityMask указывается маска процессоров на которых может быть выполнен данный поток. Маска может включать как один процессор так и несколько.

Желаю успехов


 
Woolen   (2003-10-24 16:20) [11]


> и только в случае конфликтов между потоками (читай главу
> 7) использовать SetThreadIdealProcessor

Да, вспомнил, что еще хотел спросить. А конфликты между потоками - это что? Я привык к тем конфликтам, которые принято разруливать при помощи различных средств синхронизации и в нормальной программе их быть не должно. Какие конфликты подразумеваются здесь, и причем здесь процесоры (разве для потоков с конфликтами есть разница, какой процессор и сколько их)? Ну за исключением того, что чем больше процов, тем чаще происходят конфликты. Просто я не очень сдущ в этих вопросах.


 
Rouse_ ©   (2003-10-24 16:50) [12]

Прочитайте седьмую главу Рихтера, если коротко то когда пробуждается поток который должен работать на втором процессоре а в данный момент процессор занят потоком с более низким приоритетом то он может его вытеснить или если вызвать SetThreadIdealProcessor можно перенаправить его на другой процессор.

Желаю успехов


 
Woolen   (2003-10-24 17:21) [13]

2 Rouse_
Спасибо.



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

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-11849
Ganzales
2003-12-17 13:19
2004.01.05
Установка нового компонента


1-11911
gestern
2003-12-21 16:52
2004.01.05
QuickRep1.Preview


1-11872
ruslan_as
2003-12-15 11:51
2004.01.05
Помогите посчитать часы


1-11900
Guzzy
2003-12-18 12:02
2004.01.05
FastScript


14-12136
craZy kurt
2003-12-11 19:02
2004.01.05
Бесследное удаление файлов