cds
2.3.2
|
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) | |
SegmentedQueue default traits.
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.
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.