From d64034770ef4e15c7f3599a57a2b060a042b10b6 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Mon, 28 Oct 2024 14:48:28 +0100 Subject: [PATCH] MDEV-35273 tpool::worker_data - replace MY_ALIGNED with pad member --- tpool/tpool_generic.cc | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/tpool/tpool_generic.cc b/tpool/tpool_generic.cc index 926256640dc..9697194e0b2 100644 --- a/tpool/tpool_generic.cc +++ b/tpool/tpool_generic.cc @@ -137,7 +137,7 @@ enum worker_wake_reason /* A per-worker thread structure.*/ -struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) worker_data +struct worker_data { /** Condition variable to wakeup this worker.*/ std::condition_variable m_cv; @@ -164,6 +164,8 @@ struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) worker_data }; int m_state; + /* Padding to avoid false sharing */ + char m_pad[CPU_LEVEL1_DCACHE_LINESIZE]; bool is_executing_task() { @@ -187,26 +189,6 @@ struct MY_ALIGNED(CPU_LEVEL1_DCACHE_LINESIZE) worker_data m_state(NONE), m_task_start_time() {} - - /*Define custom new/delete because of overaligned structure. */ - void* operator new(size_t size) - { -#ifdef _WIN32 - return _aligned_malloc(size, CPU_LEVEL1_DCACHE_LINESIZE); -#else - void* ptr; - int ret = posix_memalign(&ptr, CPU_LEVEL1_DCACHE_LINESIZE, size); - return ret ? 0 : ptr; -#endif - } - void operator delete(void* p) - { -#ifdef _WIN32 - _aligned_free(p); -#else - free(p); -#endif - } };