LINUX.ORG.RU

История изменений

Исправление BOSS-NIGGER, (текущая версия) :

Да, про кэш я не задумывался.

Это как минимум другие процессорные инструкции, оптимизационные барьеры для компилятора, особые требования к выравниванию из-за того как работает кэш.

Выравнивание мы уже предположили что одинаковое, вместе с размером и репрезентацией. А другие процессорные инструкции - ну так это и есть те самые операции.

Атомик не может пересекать границу кэшлайна даже если требования к выравниванию типа менее строгие.

Это я не очень понял что означает. (а, это походу Cache line contention)

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

PS в конце концов, я как белый человек все сделал через memcpy конечно, компилятор вроде должен с оптимизировать, а тут мне просто интересно понять что к чему.

Исходная версия BOSS-NIGGER, :

Да, про кэш я не задумывался.

Это как минимум другие процессорные инструкции, оптимизационные барьеры для компилятора, особые требования к выравниванию из-за того как работает кэш.

Выравнивание мы уже предположили что одинаковое, вместе с размером и репрезентацией. А другие процессорные инструкции - ну так это и есть те самые операции.

Атомик не может пересекать границу кэшлайна даже если требования к выравниванию типа менее строгие.

Это я не очень понял что означает.

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

PS в конце концов, я как белый человек все сделал через memcpy конечно, компилятор вроде должен с оптимизировать, а тут мне просто интересно понять что к чему.