Нужна ли многопоточность процессора в играх?

Обновлено: 04.07.2024

бигмакса

Выдающийся

Я просматривал обзоры между 2600x и 9400F для друга и хотел предложить 9400F, так как это, вероятно, ПК только для игр, а 9400F, кажется, немного быстрее для игр и немного дешевле, чем хорошо.

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

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

Например:
веб-браузер с кучей открытых вкладок,
программное обеспечение для голосового чата,
затаившиеся twitch-стримеры во время игры,
стриминг музыки,
игровые центры. такие как steam, blizzard, origin, epic games,
внутриигровые оверлеи, такие как steam и discord,
периферийное программное обеспечение,
все случайные фоновые процессы, которые накапливаются на реальных компьютерах, а не новая установка,
фоновые обновления,
возможно, даже загрузка игры, пока вы играете во что-то другое.

Разве не все (если не все) из этих вещей снижают производительность одного ядра и, следовательно, улучшают производительность в реальных играх за счет добавления многопоточности?

Поправьте меня, если я ошибаюсь, но я предполагаю, что, хотя 9400F может вырваться вперед в игровых тестах, он, вероятно, увязнет в реальных вещах, с которыми 2600x справится без труда?

Несколько дополнительных вопросов. Если это правда, о какой марже идет речь? Будет ли лучше пара дополнительных ядер вместо многопоточности для таких реальных игр? Будет ли потоковое вещание с одного и того же ПК на Twitch лучше работать с большим количеством необработанных ядер или с многопоточностью?

Я очень надеюсь на очень подробные ответы с примерами, но всем спасибо заранее за ответы

spencer.cleaves2

Правильно

Что касается современных ЦП (исходя из недавних открытий), возможно, было бы лучше использовать ЦП Ryzen только из-за недостатков безопасности, обнаруженных в ЦП Intel и, в первую очередь, в их технологии Hyper-Threading. Согласно тому, что я прочитал, если вы хотите защитить свой процессор Intel прямо сейчас, вам нужно отключить Hyper Threading, который немного снизит производительность процессора Intel. Если отбросить проблемы безопасности, оба они довольно сопоставимы, но с 2600X вы получаете 6 ядер/12 потоков, в отличие от 6 ядер/6 потоков с 9400F. Очевидно, что у Intel более эффективная одноядерная производительность, но какой смысл в более эффективной производительности, если вы не можете использовать Hyper-Threading? Я бы выбрал AMD только из-за информации, которую я прочитал за последние пару недель, но это полностью зависит от вас. Вероятно, никто не воспользуется игровым компьютером вашего приятеля с уязвимостью в системе безопасности, потому что хакеры, как правило, хотят атаковать что-то более масштабное, чем банковский счет вашего друга, но возможность все еще существует. Надеюсь, это поможет

бигмакса

Выдающийся

ЭлектрО_90

Великолепно

AMD, я думаю, предлагает вам больше, потому что потоки все больше и больше используются в современных играх, поэтому мы говорим о 6/12 против 6/6
Он может выполнять задачи в фоновом режиме весь день, не снижая производительности. так же, как в системе Intel

Джастин.М.Бовэ

Оценочно

Ну, это интересный вопрос! Все дело в использовании программы. Программы могут простаивать и использовать очень мало ресурсов ЦП. В большинстве случаев они более требовательны к оперативной памяти, чем к процессору. Теперь самое интересное начинается, когда эти программы становятся активными для обновления или сканирования на вирусы, или даже когда все кричат ​​в свои наушники во время неудачного рейда. Именно в это время вы замечаете утечку ресурсов даже на четырехъядерном процессоре с гиперпоточностью. ОС начинает потреблять игровые ресурсы, частота кадров падает, а игра тормозит или даже зависает.

Теперь у 6-ядерного процессора не будет столько проблем. но для использования, о котором вы говорите, скрытых стримеров или загрузки. ну чем больше тем лучше. Если вы устанавливали игру в фоновом режиме, она могла потреблять все ресурсы процессора. Игровые клиенты обычно используют сжатие для экономии полосы пропускания. Распаковка чего-то вроде игры Steam сильно загружает ЦП. Распаковка и воспроизведение видео не так тяжелы, но они могут довольно легко насытить два ядра.

Теперь у меня есть четырехъядерный процессор i5, и он зависает всякий раз, когда что-то происходит в фоновом режиме в новых играх.Мой i7 в моем игровом ноутбуке — это 4c/8t, и даже у него время от времени возникают проблемы с запуском фоновых задач, особенно с обновлениями.

Если вы можете держать под контролем фоновые задачи, i5 предложит вам немного более быстрый игровой процесс, но если вы хотите играть в эту игру, смотреть трансляцию на Twitch и иметь возможность загружать что-то в фоновом режиме, Ryzen действительно путь. Он справится с многозадачными задачами, которые заставят 9400F сидеть в углу и плакать.

Что касается гиперпоточности/SMT, я руководствуюсь эмпирическим правилом, согласно которому два логических ядра примерно равны одному физическому ядру. У меня нет точных цифр, подтверждающих это, это просто наблюдение, которое у меня было. Я не думаю, что у кого-то есть точные цифры для того, что вы ищете, и я думаю, что именно здесь рецензенты действительно заблуждаются.

Большинство игр являются однопоточными. Игры в основном используют не более 1–3 ядер, за некоторыми исключениями, такими как BF4, где используется многоядерная оптимизация.

Являются ли игры многопоточными?

Способы использования многопоточности в игровых движках.

Первый и самый классический способ многопоточности в игровом движке – создать несколько потоков, каждый из которых будет выполнять свою задачу. . В Unreal Engine 4 в качестве основного используются Game Thread и Render Thread, а также несколько других для таких вещей, как помощники, звук или загрузка.

Являются ли игры однопоточными или многопоточными?

Вообще говоря, игра требует интенсивного использования одного потока на стороне ЦП, и все параллельные задачи перекладываются на ГП. Это скорее процессор для рабочей станции или сервера, чем для игр.

Предпочтительнее ли производительность одного потока для игр?

Одноядерная производительность по-прежнему важнее, чем многоядерная производительность для игр. Тем не менее, поскольку большинство современных игр в конечном итоге будут использовать несколько ядер ЦП, числом ядер также не следует пренебрегать. . Основными процессорами для большинства сборок среднего уровня являются Intel Core i5-9600K или AMD Ryzen 5 3600X.

Используют ли игры одноядерный или многоядерный процессор?

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

Ядра ЦП и потоки объясняются

Найдено 45 похожих вопросов

Достаточно ли 6 ядер и 12 потоков для игр?

Имея только 6 ядер, каждое из которых более мощное, чем 12 потоков, вы получите лучшие результаты в большинстве современных игр (ненамного), поскольку разработчики, похоже, не очень хорошо оптимизируют производительность при использовании потоков, но процессор сможет работать дольше и лучше работать в будущих играх.

Хорошо ли 16 потоков для игр?

Что означает 4 ядра 8 потоков?

По моему опыту, 4 ядра означают, что вы можете безнаказанно выполнять 4 действия одновременно. 8 потоков просто означает, что два потока совместно используют одно ядро ​​(при условии, что они равномерно распределены), поэтому, если ваш код не имеет встроенного параллелизма, вы можете не увидеть никакого улучшения скорости по сравнению с threads == cores .

Достаточно ли двух ядер для игр?

Ответ. Учитывая их тенденцию сильно ограничивать производительность более мощных видеокарт, двухъядерные процессоры не подходят для игр в 2021 году. При этом, если у вас не очень ограниченный бюджет, лучше накопите немного денег и купите процессор Intel Core i5 или AMD Ryzen 3.

Почему игры не используют больше ядер?

Современные игры не используют преимущества многоядерных архитектур, потому что сложно, если вообще возможно, распараллелить типичные игровые задачи на базе ЦП. Все зависит от того, что что-то вычисляется перед этим, и очень мало задач, требующих солидного куска вычислительного времени, которые можно было бы распараллелить сами по себе.

Используют ли современные игры многопоточность?

Короткий ответ: да, для современных игр. Большинство из них используют один или два дополнительных потока для определенных операций.

Какие игры используют больше всего ядер?

  • Total War: Warhammer 2. Лучший процессор для Total War: Warhammer 2.
  • Rainbow Six Осада — одноядерный. Лучший процессор для Rainbox Six Siege.
  • Тень расхитительницы гробниц. .
  • Far Cry 5 – одноядерный процессор. .
  • Red Dead Redemption 2. .
  • Лучшие процессоры для ресурсоемких игр. .
  • Похожие страницы.
  • Вывод.

Используют ли игры только одно ядро?

Это заблуждение, что игры не используют более одного ядра, но это правда, что многие игры не оптимизированы для обработки нескольких ядер (особенно более 4 потоков) и равномерного распределения нагрузки на несколько ядер.< /p>

Хороша ли многопоточность?

Многопоточность не является хорошей идеей, если вам нужно гарантировать точную физическую синхронизацию (как в вашем примере).Другие минусы включают интенсивный обмен данными между потоками. Я бы сказал, что многопоточность хороша для действительно параллельных задач, если вас не очень волнует их относительная скорость/приоритет/время.

Поддерживает ли fortnite многопоточность?

Многопоточная визуализация — это параметр, который вы можете включить или отключить в Fortnite. Многопоточный рендеринг распределяет работу по рисованию между несколькими потоками и может повысить производительность процессоров с несколькими ядрами. . Вы можете узнать, сколько ядер у вашего ЦП, зайдя в Диспетчер задач и выбрав вкладку Производительность.

Хороша ли многопоточность?

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

2 ядра лучше, чем 4 ядра?

Как вы, возможно, уже догадались по их названиям, двухъядерный процессор имеет два ядра, а четырехъядерный — четыре. Наличие нескольких ядер позволяет вашему компьютеру выполнять несколько процессов одновременно. Однако большее количество ядер не всегда означает более высокую скорость обработки.

Четыре ядра лучше шести?

Для игр особой разницы нет, и, при условии одинаковых ядер, 4-ядерный будет лучше, чем 6-ядерный. Как правило, большинство приложений используют от 1 до 5 потоков, поэтому 6-ядерный вариант будет лишь немногим лучше, что опять же связано с аргументом стоимости.

Четыре ядра лучше двух?

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

Что означает 8 ядер 16 потоков?

Все центральные процессоры имеют потоки, но что именно это означает? Проще говоря, потоки — это то, что позволяет вашему процессору выполнять несколько задач одновременно. Каждое ядро ​​ЦП может иметь два потока. Таким образом, процессор с двумя ядрами будет иметь четыре потока. Процессор с восемью ядрами будет иметь 16 потоков.

4 ядра 8 потоков лучше, чем 4 ядра 4 потока?

Если вы используете рабочие приложения с поддержкой многопоточности, лучше всего использовать 8 потоков. Но если вы используете его для игр, то иметь более 4 потоков мало смысла. Большинство игр могут эффективно использовать только 2-3 потока. Для игр более важна производительность одного потока.

Что означает 4 ядра и 4 потока?

Больше потоков позволяет одновременно обрабатывать более независимые задачи (например, активно запускать две программы), тогда как ядра позволяют выполнять интенсивные задачи (или несколько задач) одновременно. Например, при кодировании видео 2C/2T и 2C/4T производительность примерно одинакова, потому что поток кодирования видео может максимально загрузить ЦП.

Достаточно ли 4 ядер и 4 потоков?

Вернемся к вашему первоначальному вопросу: да, 4 ядра сейчас *достаточно* для игр. Вы можете повысить производительность в некоторых играх (и, по-видимому, в других играх на разных картах) с более мощным многопоточным процессором. Однако с достаточно хорошим графическим процессором 4 ядра вполне достаточно. Это справедливо для 80 % игровых сборок.

Являются ли 8 потоков такими же хорошими, как 8 ядер?

Почетный. Дополнительные потоки могут помочь, но не являются необходимыми. В ближайшие несколько лет лучшим местом для игр будет от 6 до 8 ядер. Если больше потоков, помощь будет зависеть от того, как разработчик игры оптимизирует игру с точки зрения масштабирования процессора.

Что лучше: больше ядер или больше потоков?

Для выполнения других задач, таких как кодирование видео в фоновом режиме, требуется больше ядер. Хотя с этим выбором i7 8600k лучше, потому что потоки примерно на 75% производительнее реального ядра. Имея это в виду, простая математика означает, что у 8700K на 2,5 больше «ядра» (с точки зрения скорости).

Все новые игровые ЦП имеют как минимум четыре ядра, и только более устаревшие и неигровые ЦП по-прежнему имеют два или меньше ядер. Кроме того, когда дело доходит до игр, четырехъядерные процессоры на данный момент идеальны, так как они наиболее доступны по цене, а их производительность лишь незначительно отстает от процессоров с большим количеством ядер.

Сколько ядер ЦП мне нужно для игр

Вообще говоря, шесть ядер обычно считаются оптимальными для игр в 2022 году.

Четыре ядра все еще могут сократить его, но вряд ли это решение, ориентированное на будущее. Восемь и более ядер могут обеспечить повышение производительности, но все это зависит главным образом от того, как кодируется конкретная игра и какой графический процессор будет с ней работать в паре.

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

Однако процессоры — это несколько иная история.

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

Тем не менее, есть одна спецификация ЦП, которая выделяется в большинстве случаев, а именно количество ядер.

Итак, сколько ядер ЦП вам потребуется для игр в 2022 году, и так ли важно количество ядер? Читайте дальше и узнайте!

Начнем с основ.

Показать содержание

Что такое ядро ​​процессора?

ядро процессора для игр

Проще говоря, количество ядер показывает, сколько задач ЦП может выполнять одновременно. Раньше одноядерные процессоры не могли выполнять многозадачность. Вместо этого они просто быстро переключались между приоритетными задачами. Излишне говорить, что это не привело к очень плавной работе.

Положение изменилось в 2005 году, когда были выпущены первые в мире коммерческие двухъядерные процессоры, проложившие дорогу другим многоядерным процессорам. ЦП с 4, 6, 8 и более ядрами вскоре появятся на рынке в ближайшее десятилетие.

Тем не менее, несмотря на то, что многоядерные процессоры могут обеспечить явные улучшения в отношении многозадачности и различного профессионального программного обеспечения, насколько большее значение имеет большее количество ядер в играх?

Производительность одноядерных и многоядерных игр

 AMD Ryzen 5 3-го поколения

В прошлом наличие ЦП с большим количеством ядер обычно не имело большого значения, поскольку многие игры просто не были запрограммированы на полное использование нескольких ядер ЦП. Однако за последние годы ситуация резко изменилась.

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

Одноядерная производительность по-прежнему важнее, чем многоядерная производительность для игр. Тем не менее, поскольку большинство современных игр в конечном итоге будут использовать несколько ядер ЦП, числом ядер также не следует пренебрегать.

Тем не менее, если бы мы сделали некоторые обобщения, мы бы сказали, что шестиядерный процессор — лучший средний уровень для игр в 2022 году. Основными процессорами для большинства сборок среднего уровня являются Intel Core i5- 9600K или AMD Ryzen 5 3600X.

I3 против Процессор I5

Это не означает, что четырехъядерные процессоры внезапно перестали подходить для игр. На самом деле, они по-прежнему весьма жизнеспособны для бюджетных сборок.

К сожалению, сегодняшние четырехъядерные модели вряд ли можно назвать ориентированными на будущее, и они неизбежно в определенной степени станут узким местом большинства карт среднего класса. С другой стороны, преимущество ЦП с восемью или более ядрами будет полностью зависеть от того, с каким графическим процессором вы будете их сочетать.

Например, нет смысла сочетать i7-9700K с GTX 1660 Ti, но если вы нацелены на высокопроизводительный графический процессор, такой как, скажем, RTX 2080 Super, то более мощный процессор i7 или Ryzen 7 будет хорошей идеей.

Физические ядра и логические ядра

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

Технологии гиперпоточности Intel и многопоточности AMD позволяют одному физическому ядру одновременно обрабатывать две задачи, таким образом функционируя как два отдельных логических ядра.

Так хороша ли многопоточность/гиперпоточность? Ответ, безусловно, да.

 сколько ядер для игр

Большая часть линейки AMD Ryzen поддерживает многопоточность, включая все, от бюджетных моделей до моделей среднего класса. Между тем, когда дело доходит до процессоров Intel 9-го поколения, только высокопроизводительные модели i9 поставляются с гиперпоточностью.

Однако грядущие модели Comet Lake 10-го поколения будут поддерживать технологию Hyper-Threading, чтобы лучше конкурировать с AMD на этом фронте.

Теперь, хотя большее количество потоков/ядер помогает повысить общую производительность, точная производительность в игре неизбежно будет варьироваться от игры к игре.

Тот факт, что у Ryzen 5 3600X 12 потоков, а у i5-9600K всего шесть, не обязательно означает, что первый будет предлагать лучшую производительность в играх. Как мы уже упоминали ранее, в основном все зависит от того, как написан код игры и о каком графическом процессоре мы говорим.

Core I9

Как видите, простого и однозначного ответа на главный вопрос не существует. Еще несколько лет назад двухъядерные процессоры все еще были жизнеспособны в некоторых сборках. Однако сегодня четырехъядерные процессоры уже находятся на грани устаревания из-за быстрого увеличения числа ядер и потоков.

Подводя итог, можно сказать, что в 2022 году четырехъядерные процессоры, как правило, будут использоваться только для бюджетных сборок, тогда как шестиядерные процессоры часто будут лучшим выбором для конфигураций среднего уровня. Между тем восьмиъядерные процессоры подходят для высокопроизводительных ПК.

Как упоминалось в статье, это всего лишь обобщения, и фактическая производительность, которую вы получаете, будет варьироваться от модели к модели, от графического процессора к графическому процессору и от игры к игре, поэтому всегда рекомендуется искать некоторые тесты производительности. !

AA Game

Одним словом «да». Но — всегда есть «но!» — зависит от типа игры. Игры ААА (или, как говорит моя жена, игры, которые заставляют вентиляторы гудеть громче) очень требовательны к ресурсам и вычислительной мощности. Браузерные игры, возможно, не требуют такой тяжелой работы, чтобы в них можно было играть. Но давайте сначала немного предыстории. Что такое многопоточность?

Многопоточность 101

Легче начать со старомодного ПК, в котором процессор имеет только один ЦП. Он считывает инструкции из памяти, а затем выполняет их. Я упрощаю это, так как реальные процессоры имеют различные кеши памяти и используют стратегии для заполнения этих кешей, чтобы они могли работать на максимальной скорости.

Это похоже на чтение приключенческой книги в жанре фэнтези. Время от времени вам предлагается перейти на другую страницу и продолжить оттуда. Если кто-то перебивает вас и говорит: «Поиграй немного в эту другую книгу», отложите текущую книгу, возможно, сделайте закладку или запишите, на какой странице и абзаце вы были, а затем начните вторую книгу.

Поэтому, когда ЦП прерывается, он сохраняет свое место в коде и значения своих регистров, а затем начинает выполнение другого потока, загружая все соответствующие регистры и значения. В какой-то момент он переключится обратно на исходный поток выполнения.

Важным моментом здесь является то, что ЦП может выполнять только одну инструкцию за раз, так же как мы можем читать только одну книгу за раз. (Да, процессоры могут выполнять некоторые операции с плавающей запятой или целыми числами одновременно, но давайте не путать вещи.)

Поскольку ЦП одновременно выполняет только одну операцию, многопоточность не обязательно дает выигрыш в скорости, но она может пригодиться, чтобы сделать ваш компьютер более отзывчивым. Скажем, вашей игре нужно загрузить в память большой файл ресурсов. Для многих игр имеет смысл объединять все ресурсы в сжатые файлы и загружать их, чтобы свести к минимуму задержки между главами.

Диски передают данные в сотни раз медленнее, чем процессоры могут их читать или записывать. Согласно Википедии, типичный жесткий диск для настольных ПК со скоростью вращения 7200 об/мин может передавать данные со скоростью до 1030 Мбит/с, т. е. 128 МБ/с, в то время как i7 950 (процессор моего ПК) может записывать со скоростью 25 ГБ/с, что примерно в 200 раз быстрее.

Если файл на диске загружается в основном потоке, графический интерфейс на некоторое время зависает, что не очень хорошо. Чтобы сделать его отзывчивым, нам нужно загрузить его в фоновом потоке. Это многопоточность в использовании.

При прерывании работы процессора и переключении потоков для загрузки данных в память он использует менее 0,5% времени обработки. Это оставляет графический интерфейс пользователя отзывчивым.

Но в наши дни у большинства компьютеров не один ЦП. Обычно в одном чипе содержится несколько ядер, поэтому нам нужно рассмотреть многоядерное программирование.

Многоядерный

На моем ПК с Windows 7 Диспетчер задач сообщает мне, что в настоящее время выполняется 99 процессов с 1310 потоками. Процесс управляется операционной системой и соответствует работающей программе и может иметь много потоков. Он также занимает память с кодом и данными и обрабатывает открытые файлы, выделенную память. И, конечно же, сами потоки нуждаются в памяти. Каждый поток имеет собственный стек.

У моего ПК i7 950 четыре ядра или процессора. Благодаря многопоточности каждое из этих ядер фактически может выполнять два потока выполнения. Как будто оба глаза читают другую книгу. Вот почему Диспетчер задач показывает 8 окон для выполнения.

Теоретически иметь больше ядер — это хорошо, но на этой картинке использования ЦП есть одна загвоздка: он не используется полностью. Это изображение было получено при запуске однопоточного приложения, и, конечно же, диспетчер задач показывает один поток и загрузку ЦП на 13 процентов. Другими словами, он использует только один из восьми потоков.

Это приложение, которое я написал (14 лет назад и недавно обновил), выполняет запрос к SQLite, извлекает набор фьючерсов и опционов, прогнозирует их возможные значения на 10 дней вперед, а затем записывает все значения прогноза в виде огромных двоичных файлов. файлы на диск. Для сравнения, просмотр диспетчера задач для Outlook показывает, что он использует 37 потоков.

Так почему бы не перейти на многопоточность? Что ж, если бы у меня было время, возможно, это стоило бы сделать, но есть пара вещей, которые следует учитывать.

  1. В Windows любое взаимодействие с графическим интерфейсом, обновление меток и т. д. должно выполняться в одном потоке. Другие потоки не могут напрямую обновлять графические интерфейсы.
  2. Я использую DLL для выполнения нескольких финансовых расчетов, но эта DLL может быть не ориентирована на многопотоковое исполнение.

Я полагаю, что мог бы разделить три области чтения SQLite, выполнения вычислений и записи в двоичные файлы в разные потоки, но поскольку они выполняются один за другим, прирост производительности может быть незначительным или отсутствовать вообще. Чтобы перекрыть эти действия, потребуется серьезная переработка, и, конечно же, нужна поточно-ориентированная DLL. Обычно лучше, если не проще, спроектировать многопоточность, чем пытаться ее модифицировать.

Многоядерная разработка и параллелизм

Для игр важна многоядерная/многопоточная разработка. В то время как большая часть тяжелой работы с графикой выполняется графическим процессором, играм приходится находить время обработки для поиска пути, отслеживания объектов (пули и т. д.), искусственного интеллекта противника, обработки сетевого трафика в многопользовательских играх, загрузки ресурсов с диска и т. д.

C++ является основным языком разработки игр, и не случайно в недавнем выпуске C++ 11 улучшен параллелизм, то есть одновременное выполнение вычислений, и он охватывает как многопоточность, так и многоядерность.

Первоначальный C++ не понимал концепцию потоков и был привязан к конкретной платформе, например Windows API, что означало, что он не был очень переносимым. Затем появились потоки POSIX, поэтому люди привыкли писать программное обеспечение с потоками, но добиться повышения производительности никогда не было легко.

В C++ 11 модель памяти поддерживает потоки, а стандартная библиотека потоков значительно упрощает жизнь. Это было разработано таким образом, что вам не нужно использовать низкоуровневую многопоточность без потери эффективности. Однако вы все равно можете перейти на более низкий уровень, если хотите, с атомарными операциями, используя std::atomic<>. Переменные, объявленные таким образом, доступны только атомарно. Если один поток читает 4-байтовое целое, которое не обновляется атомарно, есть шанс, что он прочитает наполовину обновленное значение. Плохо.

Параллелизм в C++ — это гораздо больше. Если вы хотите узнать об этом больше, я рекомендую книгу Энтони Уильямса «Параллелизм C++ в действии: практическая многопоточность».

Читайте также: