|
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.