Цитата Сообщение от Andrey12345 Посмотреть сообщение
Вы неправы
"...as the system is restricted from running the threads on certain processors..."
Restricted: ограниченный, ограниченного пользования, узкий, для служебного пользования, закрытый
Ага, а "running"?
"Ограниченный" - не "заблокированный", опять же.
Сами вы неправы
Переводим всю фразу на русский? Она не имеет никакого отношения к определениям.
"...так как операционная система вынуждена запускать на выполнение потоки на определённых процессорах...".
И оттуда же: "...affinity mask must specify...". Перевести?
Маска задает для ОС допустимые ядра на которые можно назначить выполнение потока. Если мы ставим 0х1 - то он будет только на первом ядре (логическом процессоре) выполняться. По умолчанию стоит 0xffffffff, т.е. все доступно _на выбор ОС_.
Кто бы спорил! Заметь - "задает для ОС допустимые ядра". Это не я написал. Не "блокирует", что характерно.
И я настаиваю что это именно блокировка ,...
Так, пора прекращать.
...потому что,если, например поставить звуковую библиотеку DX и основной поток игры на 0x1 то они перестанут параллелиться на многоядерном процессоре (в каком-то патче у нас так было сделано ).
... потому что - акваланг! А серьёзно - да, ожидаемо, что параллелиться не будут. Но где здесь блокировка? Двум потокам специально и осознанно задано выполняться на первом ядре.
А и самое главное, что если в игре два нагруженных потока стоят с масками 0x1, то программа которая их "разведет" по ядрам (снимет блокировку ) может иметь смысл. Другое дело что непонятно зачем так делать в игре.
Так вышеупомянутая программа не потоки разводит (не снимает с них блокировку, а назначает потокам ядра ). Она с процессом целиком работает. Это раз.
Второе - ага. Свой обработчик на CreateThread, в нём SetThreadAffintiyMask и на выходе всё равно получить "In most cases, it is better to let the system select an available processor". Лихо!

С уважением.

З.Ы. Прекращаем? Я лично, уже заряд хорошего настроения получил. Хороший у тебя юмор, правильный. Жму руку.