@@ -119,6 +119,7 @@ struct retriever<Tag,std::vector<std::shared_ptr<Serializable>>> {
119
119
120
120
inline constexpr size_t ENTITY_CACHE_DEFAULT_MEMORY_SIZE = 67108864 /* 64 MB*/ ;
121
121
inline constexpr size_t ENTITY_CACHE_DEFAULT_MEMORY_GROW_INCREMENT = 67108864 /* 64 MB*/ ;
122
+ inline constexpr uint64_t ENTITY_CACHE_DEFAULT_LOCK_TIMEOUT_S = 10 ;
122
123
template <typename Memory, template <class ,class ...> class Container , typename ...T>
123
124
class entity_cache
124
125
{
@@ -134,7 +135,8 @@ class entity_cache
134
135
135
136
/* * Can set memory_grow_increment=0 to prevent cache from growing */
136
137
explicit entity_cache (std::string name, size_t const memory_size = ENTITY_CACHE_DEFAULT_MEMORY_SIZE,
137
- size_t const memory_grow_increment = ENTITY_CACHE_DEFAULT_MEMORY_GROW_INCREMENT)
138
+ size_t const memory_grow_increment = ENTITY_CACHE_DEFAULT_MEMORY_GROW_INCREMENT,
139
+ uint32_t lock_timeout_s = ENTITY_CACHE_DEFAULT_LOCK_TIMEOUT_S)
138
140
: _segment_ptr(), _container_ptr(), _store_name(), _cache_name(std::move(name)),
139
141
_named_mutex(bip::open_or_create, (_cache_name + " _mutex" ).c_str()),
140
142
_memory_grow_increment{memory_grow_increment} {
@@ -143,7 +145,7 @@ class entity_cache
143
145
std::string data_base_dir = " /tmp/CACHE" ;
144
146
145
147
auto guard = bip::scoped_lock{_named_mutex, bip::defer_lock};
146
- VAV_REQUIRE (guard.try_lock_for (boost::chrono::seconds (10 )));
148
+ VAV_REQUIRE (guard.try_lock_for (boost::chrono::seconds (lock_timeout_s )));
147
149
148
150
_store_name = Memory::convert_base_dir (data_base_dir) + _cache_name;
149
151
_segment_ptr.reset (Memory::open_or_create_segment (_store_name.c_str (), memory_size));
0 commit comments