void pop(V &v) { mpscq_node <V> *node; for (int i = 0; i < 128; i++) { if ((node = pop_()) != 0) { goto cleanup; } } { eif_lock lock (mutex); while ((node = pop_()) == 0) { cv.wait(lock); } } cleanup: v = node->state; delete node; }
void op(int argc, char **argv) { double n2; char c; int i; sp=0; for (i = 0; i < argc; i++) { if ((c=argv[i][0])<'0'||c>'9') switch(c) { case '+': push_(pop_()+pop_()); break; case '*': push_(pop_()*pop_()); break; case '/': n2 = pop_(); push_(pop_()/n2); break; case '-': n2 = pop_(); push_(pop_()-n2); break; } else push_(atov(argv[i])); } printf("%f\n",pop_()); }
SharedQueue::element SharedQueue::pop() { down(size); down(mutex); element result = pop_(); up(mutex); up(space); return result; }
int pop() { return pop_(); }
void Element:: el_post (Type const&) { pop_ (); }
void Element:: long_post (Type const&) { pop_ (); }
void Element:: value_post (Type const&) { pop_ (); }