pike.git / lib / modules / Thread.pmod

version» Context lines:

pike.git/lib/modules/Thread.pmod:45:    int r_ptr, w_ptr;       int size() { return w_ptr - r_ptr; }       mixed read()    {    mixed tmp;    object key=lock::lock();    while(!size()) r_cond::wait(key);    tmp=buffer[r_ptr++]; +  key=0;    return tmp;    }       void write(mixed v)    {    object key=lock::lock();    if(w_ptr >= sizeof(buffer))    {    buffer=buffer[r_ptr..];    buffer+=allocate(sizeof(buffer)+1);    w_ptr-=r_ptr;    r_ptr=0;    }    buffer[w_ptr]=v;    w_ptr++; -  +  key=0; // Must free this one _before_ the signal...    r_cond::signal();    }   };