projects
/
libcds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5bda951
)
[TSan] Fixed a race
author
khizmax
<libcds.dev@gmail.com>
Tue, 29 Nov 2016 20:29:16 +0000
(23:29 +0300)
committer
khizmax
<libcds.dev@gmail.com>
Tue, 29 Nov 2016 20:29:16 +0000
(23:29 +0300)
test/stress/freelist/put_get_single.cpp
patch
|
blob
|
history
diff --git
a/test/stress/freelist/put_get_single.cpp
b/test/stress/freelist/put_get_single.cpp
index 7ffd24465fc1f21b60b84ecffb9ccf8b7060b3c3..bfca817f7a09d82003a5dca58fc1bf6cc50512f5 100644
(file)
--- a/
test/stress/freelist/put_get_single.cpp
+++ b/
test/stress/freelist/put_get_single.cpp
@@
-46,7
+46,7
@@
namespace {
template <typename FreeList >
struct value_type: public FreeList::node
{
template <typename FreeList >
struct value_type: public FreeList::node
{
-
size_t
counter;
+
atomics::atomic<size_t>
counter;
value_type()
: counter(0)
value_type()
: counter(0)
@@
-84,7
+84,7
@@
namespace {
for ( size_t pass = 0; pass < s_nPassCount; ++pass ) {
item_type* p;
while ( (p = static_cast<item_type*>( m_FreeList.get())) == nullptr );
for ( size_t pass = 0; pass < s_nPassCount; ++pass ) {
item_type* p;
while ( (p = static_cast<item_type*>( m_FreeList.get())) == nullptr );
- p->counter
++
;
+ p->counter
.fetch_add( 1, atomics::memory_order_relaxed )
;
m_FreeList.put( p );
}
}
m_FreeList.put( p );
}
}
@@
-125,7
+125,7
@@
namespace {
propout() << std::make_pair( "duration", duration );
// analyze result
propout() << std::make_pair( "duration", duration );
// analyze result
- EXPECT_EQ( item.counter, s_nPassCount * s_nThreadCount );
+ EXPECT_EQ( item.counter
.load( atomics::memory_order_relaxed )
, s_nPassCount * s_nThreadCount );
list.clear( []( typename FreeList::node* ) {} );
}
list.clear( []( typename FreeList::node* ) {} );
}