Evgeniy(R) писал(а):
...
Я имел ввиду тех, кто пишет например игры: развлекательное ПО дня сегодняшнего двухпроцессорность не используют.
...
Предположим, есть игра c N потоками для однопроцессорной системы с ОС разделения времени. Параллельные части игры исполняются каждая в своем потоке. Взаимодействие между потоками синхронизировано с помощью примитивов ОС.
На однопроцессорной системе ОС
создает видимость параллельного выполнения потоков: поток, выбраный планировщиком на исполнение, вытесняет предыдущий, т.е. в каждый момент времени исполняется один поток.
Теперь эта игра запускается на двухпроцессорной системе. Что изменилось с точки зрения игры? Мне кажется - ничего. Игра создает те же N потоков, которые синхронизируются между собой теми же примитивами ОС. То, что теперь два потока могут
действительно выполняться параллельно, на
саму игру это никак не влияет (хотя игрок возможно заметит повышение производительности). Т.е. программы пишутся в терминах ОС (процессы, потоки, файлы и т.д.), а не в терминах "железа" (кол-во процессоров, дисков и пр.). В принципе, ОС тем и занимается, что виртуализирует реальное оборудование для каждого исполняемого процесса (ОС должна знать что теперь в системе есть N процессоров).
Получается, что N-процессорность не играет роли при написании программ. Как Вы считаете? Как программа могла бы вообще явно испозовать N-процессорность?