cds  2.3.2
cds::intrusive::segmented_queue::traits Struct Reference

SegmentedQueue default traits. More...

#include <cds/intrusive/segmented_queue.h>

Public Types

enum  { alignment = opt::cache_line_alignment }
 Alignment of critical data, default is cache line alignment. See cds::opt::alignment option specification.
 
enum  { padding = opt::no_special_padding }
 Padding of segment data, default is no special padding. More...
 
typedef opt::v::empty_disposer disposer
 Element disposer that is called when the item to be dequeued. Default is opt::v::empty_disposer (no disposer)
 
typedef atomicity::item_counter item_counter
 Item counter, default is atomicity::item_counter. More...
 
typedef segmented_queue::empty_stat stat
 Internal statistics, possible predefined types are stat, empty_stat (the default)
 
typedef opt::v::relaxed_ordering memory_model
 Memory model, default is opt::v::relaxed_ordering. See cds::opt::memory_model for the full list of possible types.
 
typedef CDS_DEFAULT_ALLOCATOR allocator
 Segment allocator. Default is CDS_DEFAULT_ALLOCATOR.
 
typedef cds::sync::spin lock_type
 Lock type used to maintain an internal list of allocated segments.
 
typedef cds::opt::v::random2_permutation< int > permutation_generator
 Random permutation generator for sequence [0, quasi_factor)
 

Detailed Description

SegmentedQueue default traits.

Member Typedef Documentation

◆ item_counter

Item counter, default is atomicity::item_counter.

The item counting is an essential part of segmented queue algorithm. The empty() member function is based on checking size() == 0. Therefore, dummy item counter like atomicity::empty_item_counter is not the proper counter.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Padding of segment data, default is no special 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.


The documentation for this struct was generated from the following file:

cds 2.3.2 Developed by Maxim Khizhinsky aka khizmax and other contributors 2007 - 2017
Autogenerated Sun Dec 31 2017 12:10:46 by Doxygen 1.8.13