X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;ds=sidebyside;f=spsc-queue-scfence%2Fspsc-queue.cc;fp=spsc-queue-scfence%2Fspsc-queue.cc;h=dde5d64e7939d70148fbd084d9ad789d1a75fd0d;hb=18571e7d16969a2cbed2eb0b6e60dd83af1ee29a;hp=0000000000000000000000000000000000000000;hpb=0c0b00b61459795a2c3efff49189844f88057599;p=model-checker-benchmarks.git diff --git a/spsc-queue-scfence/spsc-queue.cc b/spsc-queue-scfence/spsc-queue.cc new file mode 100644 index 0000000..dde5d64 --- /dev/null +++ b/spsc-queue-scfence/spsc-queue.cc @@ -0,0 +1,34 @@ +#include + +#include "queue.h" + +spsc_queue *q; + + void thread(unsigned thread_index) + { + if (0 == thread_index) + { + q->enqueue(11); + } + else + { + int d = q->dequeue(); + //RL_ASSERT(11 == d); + } + } + +int user_main(int argc, char **argv) +{ + thrd_t A, B; + + q = new spsc_queue; + + thrd_create(&A, (thrd_start_t)&thread, (void *)0); + thrd_create(&B, (thrd_start_t)&thread, (void *)1); + thrd_join(A); + thrd_join(B); + + delete q; + + return 0; +}