diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-08 09:54:10 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-08 09:54:10 +0000 |
commit | 9a44ca55274035fc9aad518c1bba424daa6c0181 (patch) | |
tree | 570da9eb7a31a5cb7a7468774fe624d27241af27 /document | |
parent | 3acc8a7761d2f16366fd3ad888d191e805d57abf (diff) |
Let c++11 take care of proper locking
Diffstat (limited to 'document')
4 files changed, 6 insertions, 33 deletions
diff --git a/document/src/vespa/document/datatype/positiondatatype.cpp b/document/src/vespa/document/datatype/positiondatatype.cpp index 8b323d20fb5..69e63d2ff72 100644 --- a/document/src/vespa/document/datatype/positiondatatype.cpp +++ b/document/src/vespa/document/datatype/positiondatatype.cpp @@ -1,19 +1,15 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "positiondatatype.h" -#include <mutex> namespace document { namespace { const vespalib::string ZCURVE("_zcurve"); -std::mutex _G_lock; } -StructDataType::UP PositionDataType::_instance; - const vespalib::string PositionDataType::STRUCT_NAME("position"); const vespalib::string PositionDataType::FIELD_X("x"); const vespalib::string PositionDataType::FIELD_Y("y"); @@ -21,7 +17,7 @@ const vespalib::string PositionDataType::FIELD_Y("y"); StructDataType::UP PositionDataType::createInstance() { - StructDataType::UP type(new StructDataType(PositionDataType::STRUCT_NAME)); + auto type = std::make_unique<StructDataType>(PositionDataType::STRUCT_NAME); type->addField(Field(PositionDataType::FIELD_X, *DataType::INT)); type->addField(Field(PositionDataType::FIELD_Y, *DataType::INT)); return type; @@ -30,13 +26,8 @@ PositionDataType::createInstance() const StructDataType & PositionDataType::getInstance() { - if ( ! _instance) { - std::lock_guard guard(_G_lock); - if ( ! _instance) { - _instance = createInstance(); - } - } - return *_instance; + static StructDataType::UP instance = createInstance(); + return *instance; } vespalib::string diff --git a/document/src/vespa/document/datatype/positiondatatype.h b/document/src/vespa/document/datatype/positiondatatype.h index c7cf1926159..45ac35b1388 100644 --- a/document/src/vespa/document/datatype/positiondatatype.h +++ b/document/src/vespa/document/datatype/positiondatatype.h @@ -7,8 +7,6 @@ namespace document { class PositionDataType { private: - static StructDataType::UP _instance; - PositionDataType(); static StructDataType::UP createInstance(); diff --git a/document/src/vespa/document/datatype/urldatatype.cpp b/document/src/vespa/document/datatype/urldatatype.cpp index bc8c2bee2c7..4db16f4705d 100644 --- a/document/src/vespa/document/datatype/urldatatype.cpp +++ b/document/src/vespa/document/datatype/urldatatype.cpp @@ -1,18 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "urldatatype.h" -#include <mutex> namespace document { -namespace { - -std::mutex _G_lock; - -} - -StructDataType::UP UrlDataType::_instance; - const vespalib::string UrlDataType::STRUCT_NAME("url"); const vespalib::string UrlDataType::FIELD_ALL("all"); const vespalib::string UrlDataType::FIELD_SCHEME("scheme"); @@ -25,7 +16,7 @@ const vespalib::string UrlDataType::FIELD_FRAGMENT("fragment"); StructDataType::UP UrlDataType::createInstance() { - StructDataType::UP type(new StructDataType(UrlDataType::STRUCT_NAME)); + auto type = std::make_unique<StructDataType>(UrlDataType::STRUCT_NAME); type->addField(Field(UrlDataType::FIELD_ALL, *DataType::STRING)); type->addField(Field(UrlDataType::FIELD_SCHEME, *DataType::STRING)); type->addField(Field(UrlDataType::FIELD_HOST, *DataType::STRING)); @@ -39,13 +30,8 @@ UrlDataType::createInstance() const StructDataType & UrlDataType::getInstance() { - if ( ! _instance ) { - std::lock_guard guard(_G_lock); - if ( ! _instance ) { - _instance = createInstance(); - } - } - return *_instance; + static StructDataType::UP instance = createInstance(); + return *instance; } } // document diff --git a/document/src/vespa/document/datatype/urldatatype.h b/document/src/vespa/document/datatype/urldatatype.h index df28b9e56b9..19ae6dde2e1 100644 --- a/document/src/vespa/document/datatype/urldatatype.h +++ b/document/src/vespa/document/datatype/urldatatype.h @@ -7,8 +7,6 @@ namespace document { class UrlDataType { private: - static StructDataType::UP _instance; - UrlDataType() { /* hide */ } static StructDataType::UP createInstance(); |