Сложности программирования потоков в той или иной степени присущи любому мультипоточному приложению, поэтому опытные программисты шарахаются от него как черт от ладана. Если я как программист и сяду за создание мультипоточного приложения, клиенту оно обойдется куда дороже обычного однопоточного. А так как работать мультипоточный вариант в самом лучшем случае будет всего лишь на треть быстрее однопоточного (из-за разделяемых ресурсов или общих переменных), то клиенту тратить на него деньги особого смысла нет. Вот он их и не тратит, и этим объясняется фактический провал широко разрекламированной в свое время технологии "гипертрейдинг" процессоров Intel. По моему личному мнению, такая же судьба ожидает и мультиядерные процессоры. Безусловно, они найдут свою нишу на серверах в Интернет или компьютерах, на которых крутятся базы данных, но обычному домашнему пользователю особого выигрыша не принесут. Никто просто не станет за бесплатно оптимизировать под множество ядер огромный объем уже вращающегося среди пользователей программного обеспечения. Заметьте: я вам рассказал историю создания мультипоточного приложения, работавшего на единственном процессоре. Если же программа будет запущена на нескольких физических ядрах, проблемы вырастут многократно. Совсем недавно была поймана ошибка, проявлявшаяся во множестве популярных игр. Все они использовали специальный таймер, имеющийся в микропроцессоре для расчета времени. В двухъядерных процессорах таких таймеров в системе оказалось не один, а два, и никто не гарантирует, что их значение будет совпадать. В результате, нажав на газ в игрушке Need for speed в самом начале длинной улицы, вы через секунду врезались в стенку в ее конце. Происходило так из-за того, что разные потоки игры использовали таймер разных ядер процессора. К слову, против этой ошибки уже патч вроде есть.
«Процессоры 2006. "Прыжки в ширину"
» https://nestor.minsk.by/kg/2006/03/kg60308.html https://nestor.minsk.by/kg/2006/03/kg60308.html
Ха. То мені таки не ввижалося що одноядерний Athlon 3200+ доволі таки часто працював швидше за Intel E6400 з двома ядрами.