forked from boostorg/unordered
temporarily restricted gc to one designated thread
This commit is contained in:
@@ -512,7 +512,8 @@ public:
|
|||||||
retired_element_allocator_type ral=this->al();
|
retired_element_allocator_type ral=this->al();
|
||||||
for(std::size_t i=0;i<garbage_vectors.size();++i){
|
for(std::size_t i=0;i<garbage_vectors.size();++i){
|
||||||
auto& v=garbage_vectors[i];
|
auto& v=garbage_vectors[i];
|
||||||
v.epoch_bump=(i*251)%garbage_vector::min_for_epoch_bump;
|
//v.epoch_bump=(i*251)%garbage_vector::min_for_epoch_bump;
|
||||||
|
v.epoch_bump=i==0?0:garbage_vector::min_for_epoch_bump+1;
|
||||||
v.retired_elements=retired_element_traits::allocate(
|
v.retired_elements=retired_element_traits::allocate(
|
||||||
ral,garbage_vector::N);
|
ral,garbage_vector::N);
|
||||||
for(std::size_t j=0;j<garbage_vector::N;++j){
|
for(std::size_t j=0;j<garbage_vector::N;++j){
|
||||||
@@ -2031,7 +2032,7 @@ private:
|
|||||||
//++garbage_collected;
|
//++garbage_collected;
|
||||||
auto p=e.p.load();
|
auto p=e.p.load();
|
||||||
this->destroy_element(p);
|
this->destroy_element(p);
|
||||||
auto pos=static_cast<std::size_t>(e.p-this->arrays.elements());
|
auto pos=static_cast<std::size_t>(p-this->arrays.elements());
|
||||||
this->arrays.groups()[pos/N].reset(pos%N);
|
this->arrays.groups()[pos/N].reset(pos%N);
|
||||||
e.epoch=retired_element::available_;
|
e.epoch=retired_element::available_;
|
||||||
++rpos;
|
++rpos;
|
||||||
|
Reference in New Issue
Block a user