From 08fafe1345dfa86b47293f467821c96d35268725 Mon Sep 17 00:00:00 2001 From: Jacob Quinn Date: Tue, 11 Jun 2024 14:49:21 -0600 Subject: [PATCH] more work --- src/LibAwsCommon.jl | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/LibAwsCommon.jl b/src/LibAwsCommon.jl index 6d4b6ff..1e92236 100644 --- a/src/LibAwsCommon.jl +++ b/src/LibAwsCommon.jl @@ -44,17 +44,22 @@ for name in names(@__MODULE__; all=true) end const DEFAULT_AWS_ALLOCATOR = Ref{Ptr{aws_allocator}}(C_NULL) +const DEFAULT_AWS_ALLOCATOR_LOCK = ReentrantLock() -function default_aws_allocator() - if DEFAULT_AWS_ALLOCATOR[] == C_NULL - DEFAULT_AWS_ALLOCATOR[] = aws_default_allocator() +function set_default_aws_allocator!(allocator) + @lock DEFAULT_AWS_ALLOCATOR_LOCK begin + DEFAULT_AWS_ALLOCATOR[] = allocator + return end - return DEFAULT_AWS_ALLOCATOR[] end -function set_default_aws_allocator!(allocator) - DEFAULT_AWS_ALLOCATOR[] = allocator - return +function default_aws_allocator() + @lock DEFAULT_AWS_ALLOCATOR_LOCK begin + if DEFAULT_AWS_ALLOCATOR[] == C_NULL + set_default_aws_allocator!(aws_default_allocator()) + end + return DEFAULT_AWS_ALLOCATOR[] + end end export default_aws_allocator, set_default_aws_allocator!