mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-02 22:24:26 +00:00
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.
This commit is contained in:
parent
d463f6e00a
commit
65b338ad04
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue