Конференция "WinAPI" » Многопоточная программа и распределение ядер CPU [D7, WinXP]
 
  • Awak00m (26.01.19 17:10) [20]

    > Для защиты от многопоточности getMem и freemem обёрнуты
    > мьютексом(спин-локом).

    Понятно. Я по наивности думал, что это решено на уровне ядра оси ))

    > А то что у вас глючит, то я писал у вас защиты от локов
    > никакой, нет.

    Так а что Вы конкретно имеете в виду? Что значит "защита от локов"? Сами нити ведь работают норм, и друг другу не мешают. Друг друга они не лочат. Можете пример привести?
  • Awak00m (27.01.19 11:22) [21]
    > Для защиты от многопоточности getMem и freemem обёрнуты
    > мьютексом(спин-локом).
    А, кажется, я понял. При очень частом обращении к GetMem() / FreeMem() львиная доля времени тратится на них, а не на полезные вычисления. Поэтому и получается простой в нитях. А там, видимо, это относительно часто происходит.
    Но, все равно, непонятно, почему на двух ядрах загрузка 100%, а на восьми - только 3%. Что, при почти одной тактовой частоте i7 2,3 ГГц настолько быстрее "считает", чем Core-II Duo 2,16 ГГц? Или на i7 GetMem() настолько медленнее работает? Казалось бы, а проц-то здесь при чем? ОС везде одна и та же.
 
Конференция "WinAPI" » Многопоточная программа и распределение ядер CPU [D7, WinXP]
Есть новые Нет новых   [118645   +50][b:0][p:0]