Ignore:
Timestamp:
Nov 16, 2001, 3:10:43 PM (24 years ago)
Author:
aubourg
Message:

race condition magique

File:
1 edited

Legend:

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

    r1763 r1773  
    33//                               Christophe Magneville
    44//                               Reza Ansari
    5 // $Id: toisegment.cc,v 1.22 2001-11-14 13:45:39 aubourg Exp $
     5// $Id: toisegment.cc,v 1.23 2001-11-16 14:10:43 aubourg Exp $
    66
    77#include "toisegment.h"
     
    240240  firstNeeded = -1;
    241241  waiting = false;
     242  waitingFor = -1;
    242243}
    243244
     
    295296    pthread_mutex_lock(&(master->read_wait_mutex));
    296297    while (sn0<0 || sn >= sn0 + segmentSize*segments.size()) {
    297       wait(); // must be atomic with loop test // $CHECK$ est-ce vrai ?
     298      wait(sn); // must be atomic with loop test // $CHECK$ est-ce vrai ?
    298299      pthread_mutex_unlock(&(master->read_wait_mutex));
    299300      LOG(cout << master->name << " BufferView " << hex << this << dec << ": waiting for " << sn << endl)
     
    313314}
    314315
    315 void TOISegmented::BufferView::wait() { /* reader thread, master read wait lock taken */
     316void TOISegmented::BufferView::wait(int sn) { /* reader thread, master read wait lock taken */
    316317  //pthread_mutex_lock(&(master->read_wait_mutex));
    317318  waiting = true;
     319  waitingFor = sn;
    318320  master->waitingViews++;
    319321  pthread_cond_wait(&(master->read_wait_condv), &(master->read_wait_mutex));
    320322  waiting = false;
     323  waitingFor = -1;
    321324  master->waitingViews--;
    322325  //pthread_mutex_unlock(&(master->read_wait_mutex));
Note: See TracChangeset for help on using the changeset viewer.