issue #76: added cds::atomicity::cache_friendly_item_counter to avoid false sharing
[libcds.git] / cds / container / details / iterable_list_base.h
index 2d6e9fb534decb633fa7d46f0e45125dfc145b28..699180192b39fac32c59f90585a3ab1594ce140d 100644 (file)
@@ -1,11 +1,11 @@
 /*
     This file is a part of libcds - Concurrent Data Structures library
 
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
 
     Source code repo: http://github.com/khizmax/libcds/
     Download: http://sourceforge.net/projects/libcds/files/
-    
+
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions are met:
 
@@ -78,7 +78,7 @@ namespace cds { namespace container {
             /// Back-off strategy
             typedef intrusive::iterable_list::traits::back_off back_off;
 
-            /// Item counting feature; by default, disabled. Use \p cds::atomicity::item_counter to enable item counting
+            /// Item counting feature; by default, disabled. Use \p cds::atomicity::item_counter or \p atomicity::cache_friendly_item_counter to enable item counting
             typedef intrusive::iterable_list::traits::item_counter item_counter;
 
             /// Internal statistics
@@ -118,13 +118,11 @@ namespace cds { namespace container {
             - \p opt::node_allocator - node allocator, default is \p std::allocator.
             - \p opt::back_off - back-off strategy used. If the option is not specified, the \p cds::backoff::Default is used.
             - \p opt::item_counter - the type of item counting feature. Default is disabled (\p atomicity::empty_item_counter).
-                 To enable item counting use \p atomicity::item_counter.
+                 To enable item counting use \p atomicity::item_counter or \p atomicity::cache_friendly_item_counter.
             - \p opt::stat - internal statistics. By default, it is disabled (\p iterable_list::empty_stat).
                 To enable it use \p iterable_list::stat
             - \p opt::memory_model - C++ memory ordering model. Can be \p opt::v::relaxed_ordering (relaxed memory model, the default)
                 or \p opt::v::sequential_consistent (sequentially consistent memory model).
-            - \p opt::rcu_check_deadlock - a deadlock checking policy for \ref cds_intrusive_IterableList_rcu "RCU-based IterableList"
-                Default is \p opt::v::rcu_throw_deadlock
         */
         template <typename... Options>
         struct make_traits {
@@ -148,41 +146,6 @@ namespace cds { namespace container {
     template <typename GC, typename Key, typename Value, typename Traits=iterable_list::traits>
     class IterableKVList;
 
-    // Tag for selecting iterable list implementation
-    /**
-        This struct is empty and it is used only as a tag for selecting \p IterableList
-        as ordered list implementation in declaration of some classes.
-
-        See split_list::traits::ordered_list as an example.
-    */
-    struct iterable_list_tag
-    {};
-
-    //@cond
-    template <typename List>
-    struct is_iterable_list {
-        enum {
-            value = false
-        };
-    };
-
-    template <typename GC, typename T, typename Traits>
-    struct is_iterable_list< IterableList<GC, T, Traits >>
-    {
-        enum {
-            value = true
-        };
-    };
-
-    template <typename GC, typename T, typename Traits>
-    struct is_iterable_list< IterableKVList<GC, T, Traits >>
-    {
-        enum {
-            value = true
-        };
-    };
-    //@endcond
-
 }}  // namespace cds::container