@anchor cds_nonintrusive_LazyKVList_nogc
This specialization is append-only list when no item
- reclamation may be performed. The class does not support deleting of list item.
+ reclamation may be performed. The class does not support deleting of list's item.
- @copydetails cds_nonintrusive_LazyList_gc
+ See @ref cds_nonintrusive_LazyList_gc "cds::container::LazyList<cds::gc::nogc, T, Traits>"
*/
template <
typename Key,
relationship (\p Traits::equal_to), but for the ordered list \p less
or \p compare relations should be specified in \p Traits.
- @copydetails cds_nonintrusive_LazyList_gc
+ See @ref cds_nonintrusive_LazyList_gc "cds::container::LazyList<cds::gc::nogc, T, Traits>"
*/
template <
typename T,
This specialization is so-called append-only when no item
reclamation may be performed. The class does not support deleting of map item.
- See \ref cds_nonintrusive_MichaelHashMap_hp "MichaelHashMap" for description of template parameters.
+ See @ref cds_nonintrusive_MichaelHashMap_hp "MichaelHashMap" for description of template parameters.
*/
template <
class OrderedList,
public:
/// Initialize the map
- /** @copydetails cds_nonintrusive_MichaelHashMap_hp_ctor
+ /**
+ The Michael's hash map is non-expandable container. You should point the average count of items \p nMaxItemCount
+ when you create an object.
+ \p nLoadFactor parameter defines average count of items per bucket and it should be small number between 1 and 10.
+ Remember, since the bucket implementation is an ordered list, searching in the bucket is linear [<tt>O(nLoadFactor)</tt>].
+ Note, that many popular STL hash map implementation uses load factor 1.
+
+ The ctor defines hash table size as rounding <tt>nMacItemCount / nLoadFactor</tt> up to nearest power of two.
*/
MichaelHashMap(
size_t nMaxItemCount, ///< estimation of max item count in the hash set
public:
/// Initializes the map
- /** @copydetails cds_nonintrusive_MichaelHashMap_hp_ctor
+ /**
+ The Michael's hash map is non-expandable container. You should point the average count of items \p nMaxItemCount
+ when you create an object.
+ \p nLoadFactor parameter defines average count of items per bucket and it should be small number between 1 and 10.
+ Remember, since the bucket implementation is an ordered list, searching in the bucket is linear [<tt>O(nLoadFactor)</tt>].
+ Note, that many popular STL hash map implementation uses load factor 1.
+
+ The ctor defines hash table size as rounding <tt>nMacItemCount / nLoadFactor</tt> up to nearest power of two.
*/
MichaelHashMap(
size_t nMaxItemCount, ///< estimation of max item count in the hash map
public:
/// Initialize hash set
- /** @copydetails cds_nonintrusive_MichaelHashSet_hp_ctor
+ /**
+ The Michael's hash set is non-expandable container. You should point the average count of items \p nMaxItemCount
+ when you create an object.
+ \p nLoadFactor parameter defines average count of items per bucket and it should be small number between 1 and 10.
+ Remember, since the bucket implementation is an ordered list, searching in the bucket is linear [<tt>O(nLoadFactor)</tt>].
+
+ The ctor defines hash table size as rounding <tt>nMaxItemCount / nLoadFactor</tt> up to nearest power of two.
*/
MichaelHashSet(
size_t nMaxItemCount, ///< estimation of max item count in the hash set
public:
/// Initialize hash set
- /** @copydetails cds_nonintrusive_MichaelHashSet_hp_ctor
+ /**
+ The Michael's hash set is non-expandable container. You should point the average count of items \p nMaxItemCount
+ when you create an object.
+ \p nLoadFactor parameter defines average count of items per bucket and it should be small number between 1 and 10.
+ Remember, since the bucket implementation is an ordered list, searching in the bucket is linear [<tt>O(nLoadFactor)</tt>].
+
+ The ctor defines hash table size as rounding <tt>nMaxItemCount / nLoadFactor</tt> up to nearest power of two.
*/
MichaelHashSet(
size_t nMaxItemCount, ///< estimation of max item count in the hash set
enum { alignment = opt::cache_line_alignment };
/// Padding of segment data, default is no special padding
- /** @copydetails cds::intrusive::segmented_queue::traits::padding
+ /**
+ The segment is just an array of atomic data pointers,
+ so, the high load leads to false sharing and performance degradation.
+ A padding of segment data can eliminate false sharing issue.
+ On the other hand, the padding leads to increase segment size.
*/
enum { padding = cds::intrusive::segmented_queue::traits::padding };
public:
/// Initializes hash set
- /** @copydetails cds_intrusive_MichaelHashSet_hp_ctor
+ /**
+ The Michael's hash set is an unbounded container, but its hash table is non-expandable.
+ At construction time you should pass estimated maximum item count and a load factor.
+ The load factor is average size of one bucket - a small number between 1 and 10.
+ The bucket is an ordered single-linked list, searching in the bucket has linear complexity <tt>O(nLoadFactor)</tt>.
+ The constructor defines hash table size as rounding <tt>nMaxItemCount / nLoadFactor</tt> up to nearest power of two.
*/
MichaelHashSet(
size_t nMaxItemCount, ///< estimation of max item count in the hash set