Форум: "Система";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
ВнизПотоки и процессоры Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c