Changeset 1709 in Sophya for trunk/ArchTOIPipe


Ignore:
Timestamp:
Oct 19, 2001, 12:21:18 PM (24 years ago)
Author:
aubourg
Message:

lock problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ArchTOIPipe/Kernel/toisegment.cc

    r1700 r1709  
    219219    LOG(cout << "BufferView " << hex << this << dec << ": read fault for " << sn << endl)
    220220    sync();
     221    pthread_mutex_lock(&(master->read_wait_mutex));
    221222    while (sn0<0 || sn >= sn0 + segmentSize*segments.size()) {
    222       wait();
     223      wait(); // must be atomic with loop test
     224      pthread_mutex_unlock(&(master->read_wait_mutex));
    223225      LOG(cout << "BufferView " << hex << this << dec << ": waiting for " << sn << endl)
    224226      sync();
    225     }
     227      pthread_mutex_lock(&(master->read_wait_mutex));
     228    }
     229    pthread_mutex_unlock(&(master->read_wait_mutex));
     230
    226231    LOG(cout << "BufferView " << hex << this << dec << ": resuming for " << sn
    227232        << " now data for " << sn0 << " - " << sn0 + segmentSize*segments.size()
     
    234239}
    235240
    236 void TOISegmented::BufferView::wait() { /* reader thread */
    237   pthread_mutex_lock(&(master->read_wait_mutex));
     241void TOISegmented::BufferView::wait() { /* reader thread, master read wait lock taken */
     242  //pthread_mutex_lock(&(master->read_wait_mutex));
    238243  waiting = true;
    239244  pthread_cond_wait(&(master->read_wait_condv), &(master->read_wait_mutex));
    240245  waiting = false;
    241   pthread_mutex_unlock(&(master->read_wait_mutex));
     246  //pthread_mutex_unlock(&(master->read_wait_mutex));
    242247}
    243248
Note: See TracChangeset for help on using the changeset viewer.