1 #include <cds/gc/dhp.h>
4 #include <cds/intrusive/segmented_queue.h>
10 namespace ci = cds::intrusive;
11 typedef cds::gc::HP hp_gc;
18 // Declare traits for the queue
19 struct MyTraits : public cds::intrusive::segmented_queue::traits {
20 typedef cds::intrusive::segmented_queue::stat<> stat;
21 typedef cds::atomicity::item_counter item_counter;
24 // The queue stores the pointers to enqueued items so no special node hooks are
26 // At least, declare the queue type
27 typedef ci::SegmentedQueue<hp_gc, Foo, MyTraits> MyQueue;
33 // Initialize Hazard Pointer singleton
34 cds::gc::HP hpGC(128, 8, 128);
35 // If main thread uses lock-free containers
36 // the main thread should be attached to libcds infrastructure
37 cds::threading::Manager::attachThread();
42 Foo *res = q.dequeue();
44 cout << "Dequeued " << res->x << "\n";
46 cout << "Dequeued none\n";