Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
1-11919
Magician
2003-12-21 10:07
2004.01.05
Прокрутка коипонента


14-12116
Undert
2003-12-13 23:16
2004.01.05
Посоветуйте doc/help/manual по JPEG...


14-12112
KosilkA
2003-12-13 19:44
2004.01.05
как вам это? http://vivatrossija.narod.ru/


7-12170
Vlad25
2003-10-26 13:10
2004.01.05
Как связать программу с определенным типом файлов?


4-12205
ZEE
2003-11-04 15:09
2004.01.05
TextHeight без TCanvas





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский