Есть два проца:
1. Способен выполнять 6 нитей исполнения одновременно, 3.2Ггц, 2010 год разработки.
2. 8 нитей, 4.2Ггц, 2021 год разработки.
Есть программа, которая ради тестирования библиотеки, создает 10 000 потоков, каждый из которых конкурирует, если обобщить то за один ресурс (мьютекс).
Запускал программу на 1, 2 (и потом еще другом процессоре, тоже современном, подобном 2-му). Во всех случаях, на 1-м работает быстрее. Ощутимо. Скорость работы по IO от всех конкурирующих меж собой потоков держится в среднем 1.8 Мегабайт/с. В более шустрых процах всего 0.8.
Естественно на всех конфигурациях SSD, отсутствие фоновых процессов способных как-то ощутимо повлиять на IO или процессорное время (более того на более слабой машине таких фоновых - намного больше, и браузер, и ещё всякое и т.п., а на удаленных машинах, где тестировал, кроме программы грубо говоря и не было потребителей мощностей), памяти на всех одинаковый объём, но на моем DDR3, а на новых DDR4.
Есть у кого-нибудь теоритические познания - которые могут объяснить в чём может быть дело?
Может ли быть так что чем больше процессор может выполнять потоков исполнения - тем хуже работа с мьютексом, при условии огромной конкуренции за него?
Если это так то как-тогда наиболее просто и переносимо (C++) реализовывать блокировку ресурса, который одновременно стремяться читать и изменять все потоки.