Exemplo n.º 1
0
  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;
  }
Exemplo n.º 2
0
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_());
}
Exemplo n.º 3
0
SharedQueue::element SharedQueue::pop() {
  down(size);
  down(mutex);
  element result = pop_();
  up(mutex);
  up(space);
  return result;
}
Exemplo n.º 4
0
int pop()
{
    return pop_();
}
Exemplo n.º 5
0
 void Element::
 el_post (Type const&)
 {
   pop_ ();
 }
Exemplo n.º 6
0
 void Element::
 long_post (Type const&)
 {
   pop_ ();
 }
Exemplo n.º 7
0
 void Element::
 value_post (Type const&)
 {
   pop_ ();
 }