1 #include <cds/gc/dhp.h>
4 #include <cds/intrusive/basket_queue.h>
10 namespace ci = cds::intrusive;
11 typedef cds::gc::HP hp_gc;
13 struct Foo : public ci::basket_queue::node<hp_gc> {
18 // Declare traits for the queue
19 struct MyTraits : public cds::intrusive::basket_queue::traits {
20 typedef cds::intrusive::basket_queue::stat<> stat;
21 typedef cds::atomicity::item_counter item_counter;
24 // At least, declare the queue type
25 typedef ci::BasketQueue<hp_gc, Foo, MyTraits> MyQueue;
31 // Initialize Hazard Pointer singleton
32 cds::gc::HP hpGC(128, 8, 128);
33 // If main thread uses lock-free containers
34 // the main thread should be attached to libcds infrastructure
35 cds::threading::Manager::attachThread();
43 cout << "Dequeued " << res->x << "\n";
45 cout << "Dequeued none\n";