From efff7f5041f8068db04ab57fc82277fbb4e83627 Mon Sep 17 00:00:00 2001 From: dhickin Date: Mon, 8 Jun 2015 10:34:10 +0100 Subject: [PATCH] Improve thread-safety of NTNDArray. --- src/nt/ntndarray.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/nt/ntndarray.cpp b/src/nt/ntndarray.cpp index 45fdd05..f00be5c 100644 --- a/src/nt/ntndarray.cpp +++ b/src/nt/ntndarray.cpp @@ -25,6 +25,8 @@ const std::string ntAttrStr("epics:nt/NTAttribute:1.0"); static FieldCreatePtr fieldCreate = getFieldCreate(); static PVDataCreatePtr pvDataCreate = getPVDataCreate(); +static Mutex mutex; + StructureConstPtr NTNDArrayBuilder::createStructure() { enum @@ -38,16 +40,14 @@ StructureConstPtr NTNDArrayBuilder::createStructure() const size_t NUMBER_OF_INDICES = DISPLAY_INDEX+1; const size_t NUMBER_OF_STRUCTURES = 1 << NUMBER_OF_INDICES; + Lock xx(mutex); + static StructureConstPtr ntndarrayStruc[NUMBER_OF_STRUCTURES]; static UnionConstPtr valueType; static StructureConstPtr codecStruc; static StructureConstPtr dimensionStruc; static StructureConstPtr attributeStruc; - static Mutex mutex; - - Lock xx(mutex); - StructureConstPtr returnedStruc; size_t index = 0;