Mercurial > hg > Papers > 2016 > kkb-master
view paper/src/sync_dequeue.c @ 16:958634b9fa32
make paper directory
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 17 Feb 2016 16:59:46 +0900 |
parents | src/sync_dequeue.c@12d1c2f53258 |
children |
line wrap: on
line source
// Dequeue __code getQueue(struct Context* context, struct Queue* queue, struct Node* node) { if (queue->first == 0) return; struct Element* first = queue->first; if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) { queue->count--; context->next = GetQueue; stack_push(context->code_stack, &context->next); context->next = first->task->code; node->key = first->task->key; goto meta(context, Get); } else { goto meta(context, GetQueue); } }