projects
/
libcds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5fb9d3c
)
Fixed docs
author
khizmax
<libcds.dev@gmail.com>
Sat, 12 Mar 2016 08:59:23 +0000
(11:59 +0300)
committer
khizmax
<libcds.dev@gmail.com>
Sat, 12 Mar 2016 08:59:23 +0000
(11:59 +0300)
cds/intrusive/michael_set_rcu.h
patch
|
blob
|
history
cds/intrusive/split_list.h
patch
|
blob
|
history
cds/intrusive/split_list_nogc.h
patch
|
blob
|
history
cds/intrusive/split_list_rcu.h
patch
|
blob
|
history
diff --git
a/cds/intrusive/michael_set_rcu.h
b/cds/intrusive/michael_set_rcu.h
index 867191e7bf35150dd58773f764fea5bdf32e17f9..9157f02dbe6dbbee52e946aa1940c8f4deb64aa6 100644
(file)
--- a/
cds/intrusive/michael_set_rcu.h
+++ b/
cds/intrusive/michael_set_rcu.h
@@
-156,7
+156,7
@@
namespace cds { namespace intrusive {
//@endcond
public:
//@endcond
public:
- ///@name Forward iterators (thread-safe
only
under RCU lock)
+ ///@name Forward iterators (thread-safe under RCU lock)
//@{
/// Forward iterator
/**
//@{
/// Forward iterator
/**
diff --git
a/cds/intrusive/split_list.h
b/cds/intrusive/split_list.h
index 9a7e198e55a61d31bacc2671a1557cb0b22b074c..1316360f03d15aafc81970921bd052b74641185a 100644
(file)
--- a/
cds/intrusive/split_list.h
+++ b/
cds/intrusive/split_list.h
@@
-1135,6
+1135,8
@@
namespace cds { namespace intrusive {
};
//@endcond
public:
};
//@endcond
public:
+ ///@name Forward iterators (only for debugging purpose)
+ //@{
/// Forward iterator
/**
The forward iterator for a split-list has some features:
/// Forward iterator
/**
The forward iterator for a split-list has some features:
@@
-1142,12
+1144,13
@@
namespace cds { namespace intrusive {
- it depends on iterator of underlying \p OrderedList
- The iterator cannot be moved across thread boundary since it may contain GC's guard that is thread-private GC data.
- Iterator ensures thread-safety even if you delete the item that iterator points to. However, in case of concurrent
- it depends on iterator of underlying \p OrderedList
- The iterator cannot be moved across thread boundary since it may contain GC's guard that is thread-private GC data.
- Iterator ensures thread-safety even if you delete the item that iterator points to. However, in case of concurrent
- deleting operations it is no guarantee that you iterate all item in the split-list.
+ deleting operations it is no guarantee that you iterate all item in the set.
+ Moreover, a crash is possible when you try to iterate the next element that has been deleted by concurrent thread.
- Therefore, the use of iterators in concurrent environment is not good idea. Use the iterator on the concurrent container
- for debug purpose only.
+ @warning Use this iterator on the concurrent container for debugging purpose only.
*/
typedef iterator_type<false> iterator;
*/
typedef iterator_type<false> iterator;
+
/// Const forward iterator
/**
For iterator's features and requirements see \ref iterator
/// Const forward iterator
/**
For iterator's features and requirements see \ref iterator
@@
-1196,7
+1199,7
@@
namespace cds { namespace intrusive {
{
return const_iterator( m_List.cend(), m_List.cend());
}
{
return const_iterator( m_List.cend(), m_List.cend());
}
-
+ //@}
};
}} // namespace cds::intrusive
};
}} // namespace cds::intrusive
diff --git
a/cds/intrusive/split_list_nogc.h
b/cds/intrusive/split_list_nogc.h
index f10775135fae6f82d9501700d4dbf1498ded94e1..3784d5a8dbf5f7c17f27a02fea242978c45dbffb 100644
(file)
--- a/
cds/intrusive/split_list_nogc.h
+++ b/
cds/intrusive/split_list_nogc.h
@@
-542,6
+542,8
@@
namespace cds { namespace intrusive {
//@endcond
public:
//@endcond
public:
+ ///@name Forward iterators
+ //@{
/// Forward iterator
/**
The forward iterator for a split-list has some features:
/// Forward iterator
/**
The forward iterator for a split-list has some features:
@@
-549,6
+551,7
@@
namespace cds { namespace intrusive {
- it depends on iterator of underlying \p OrderedList
*/
typedef iterator_type<false> iterator;
- it depends on iterator of underlying \p OrderedList
*/
typedef iterator_type<false> iterator;
+
/// Const forward iterator
/**
For iterator's features and requirements see \ref iterator
/// Const forward iterator
/**
For iterator's features and requirements see \ref iterator
@@
-577,28
+580,29
@@
namespace cds { namespace intrusive {
}
/// Returns a forward const iterator addressing the first element in a split-list
}
/// Returns a forward const iterator addressing the first element in a split-list
- //@{
const_iterator begin() const
{
return const_iterator( m_List.begin(), m_List.end() );
}
const_iterator begin() const
{
return const_iterator( m_List.begin(), m_List.end() );
}
+
+ /// Returns a forward const iterator addressing the first element in a split-list
const_iterator cbegin() const
{
return const_iterator( m_List.cbegin(), m_List.cend() );
}
const_iterator cbegin() const
{
return const_iterator( m_List.cbegin(), m_List.cend() );
}
- //@}
/// Returns an const iterator that addresses the location succeeding the last element in a split-list
/// Returns an const iterator that addresses the location succeeding the last element in a split-list
- //@{
const_iterator end() const
{
return const_iterator( m_List.end(), m_List.end() );
}
const_iterator end() const
{
return const_iterator( m_List.end(), m_List.end() );
}
+
+ /// Returns an const iterator that addresses the location succeeding the last element in a split-list
const_iterator cend() const
{
return const_iterator( m_List.cend(), m_List.cend() );
}
const_iterator cend() const
{
return const_iterator( m_List.cend(), m_List.cend() );
}
-
//@}
+ //@}
protected:
//@cond
protected:
//@cond
diff --git
a/cds/intrusive/split_list_rcu.h
b/cds/intrusive/split_list_rcu.h
index 94088046cf9ceedb4f0fb5e4c0f5d9ac1752bf15..0159b6e1a43efdb01b2f6147e94f826d7330eb3f 100644
(file)
--- a/
cds/intrusive/split_list_rcu.h
+++ b/
cds/intrusive/split_list_rcu.h
@@
-1025,17
+1025,16
@@
namespace cds { namespace intrusive {
//@endcond
public:
//@endcond
public:
+ ///@name Forward iterators (thread-safe under RCU lock)
+ //@{
/// Forward iterator
/**
The forward iterator for a split-list has some features:
- it has no post-increment operator
- it depends on iterator of underlying \p OrderedList
/// Forward iterator
/**
The forward iterator for a split-list has some features:
- it has no post-increment operator
- it depends on iterator of underlying \p OrderedList
- - The iterator cannot be moved across thread boundary since it may contain GC's guard that is thread-private GC data.
- - Iterator ensures thread-safety even if you delete the item that iterator points to. However, in case of concurrent
- deleting operations it is no guarantee that you iterate all item in the split-list.
- Therefore, the use of iterators in concurrent environment is not good idea. Use the iterator on the concurrent container
-
for debug purpose only
.
+ You may safely use iterators in multi-threaded environment only under RCU lock.
+
Otherwise, a crash is possible if another thread deletes the element the iterator points to
.
*/
typedef iterator_type<false> iterator;
/// Const forward iterator
*/
typedef iterator_type<false> iterator;
/// Const forward iterator
@@
-1086,7
+1085,7
@@
namespace cds { namespace intrusive {
{
return const_iterator( m_List.cend(), m_List.cend() );
}
{
return const_iterator( m_List.cend(), m_List.cend() );
}
-
+ //@}
};
}} // namespace cds::intrusive
};
}} // namespace cds::intrusive