diff --git a/score/memory/shared/BUILD b/score/memory/shared/BUILD index dcbbd6726f..ba15265615 100644 --- a/score/memory/shared/BUILD +++ b/score/memory/shared/BUILD @@ -154,6 +154,7 @@ cc_library( ":lock_file", ":pointer_arithmetic_util", ":types", + "@score_baselibs//score/concurrency:atomic_indirector", "@score_baselibs//score/language/futurecpp", "@score_baselibs//score/language/safecpp/safe_math", "@score_baselibs//score/memory/shared/sealedshm/sealedshm_wrapper:sealedshm", @@ -789,6 +790,7 @@ cc_gtest_unit_test( deps = [ ":pointer_arithmetic_util", ":shared_memory_test_resources", + "@score_baselibs//score/concurrency:atomic_indirector_mock_binding", "@score_baselibs//score/memory/shared/fake:fake_memory_resources", "@score_baselibs//score/mw/log:backend_stub_testutil", ], diff --git a/score/memory/shared/shared_memory_resource.cpp b/score/memory/shared/shared_memory_resource.cpp index 0cc2c44477..acd4629bdd 100644 --- a/score/memory/shared/shared_memory_resource.cpp +++ b/score/memory/shared/shared_memory_resource.cpp @@ -12,6 +12,7 @@ ********************************************************************************/ #include "score/memory/shared/shared_memory_resource.h" #include "score/language/safecpp/string_view/zstring_view.h" +#include "score/concurrency/atomic_indirector.h" #include "score/memory/shared/memory_resource_proxy.h" #include "score/memory/shared/memory_resource_registry.h" #include "score/memory/shared/pointer_arithmetic_util.h" @@ -688,51 +689,109 @@ auto SharedMemoryResource::getMemoryResourceProxy() noexcept -> const MemoryReso auto SharedMemoryResource::do_allocate(const std::size_t bytes, const std::size_t alignment) -> void* { - std::lock_guard lock(this->control_block_->mutex); + return do_allocate_with_indirector(bytes, alignment); +} + +template