Преглед на файлове

AK: Allow alignment to cache line size with CACHE_ALIGNED

This is particularly important to avoid false sharing, which thrashes
performance when two process-shared atomics are on the same cache line.
kleines Filmröllchen преди 3 години
родител
ревизия
65b338ad04
променени са 1 файла, в които са добавени 13 реда и са изтрити 0 реда
  1. 13 0
      AK/Platform.h

+ 13 - 0
AK/Platform.h

@@ -110,3 +110,16 @@ extern "C" {
 #    define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC
 #    define CLOCK_REALTIME_COARSE CLOCK_REALTIME
 #endif
+
+#ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
+#    if ARCH(AARCH64) || ARCH(x86_64)
+#        define SYSTEM_CACHE_ALIGNMENT_SIZE 64
+#    else
+#        define SYSTEM_CACHE_ALIGNMENT_SIZE 128
+#    endif
+#endif /* SYSTEM_CACHE_ALIGNMENT_SIZE */
+
+#ifdef CACHE_ALIGNED
+#    undef CACHE_ALIGNED
+#endif
+#define CACHE_ALIGNED alignas(SYSTEM_CACHE_ALIGNMENT_SIZE)