Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/boundedBuffer.c

    r6c7b1e7 r4cedd9f  
    1 // 
     1//
    22// The contents of this file are covered under the licence agreement in the
    33// file "LICENCE" distributed with Cforall.
    4 // 
    5 // boundedBuffer.c -- 
    6 // 
     4//
     5// boundedBuffer.c --
     6//
    77// Author           : Peter A. Buhr
    88// Created On       : Mon Oct 30 12:45:13 2017
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Mon Oct 30 23:02:46 2017
    11 // Update Count     : 9
    12 // 
     10// Last Modified On : Mon Oct 30 18:00:10 2017
     11// Update Count     : 7
     12//
    1313
    1414#include <stdlib>
    15 #include <fstream>                                                                              // random
     15#include <fstream>
    1616#include <kernel>
    1717#include <thread>
    18 #include <unistd.h>                                                                             // getpid
     18#include <unistd.h>                                     // getpid
    1919
    2020monitor Buffer {
     
    3131
    3232void insert( Buffer & mutex buffer, int elem ) {
    33         if ( buffer.count == 20 ) wait( &buffer.empty );
     33        if ( buffer.count == 20 ) wait( buffer.empty );
    3434        buffer.elements[buffer.back] = elem;
    3535        buffer.back = ( buffer.back + 1 ) % 20;
    3636        buffer.count += 1;
    37         signal( &buffer.full );
     37        signal( buffer.full );
    3838}
    3939int remove( Buffer & mutex buffer ) {
    40         if ( buffer.count == 0 ) wait( &buffer.full );
     40        if ( buffer.count == 0 ) wait( buffer.full );
    4141        int elem = buffer.elements[buffer.front];
    4242        buffer.front = ( buffer.front + 1 ) % 20;
    4343        buffer.count -= 1;
    44         signal( &buffer.empty );
     44        signal( buffer.empty );
    4545        return elem;
    4646}
     
    5252void main( Producer & prod ) {
    5353        for ( int i = 1; i <= prod.N; i += 1 ) {
    54                 yield( random( 5 ) );
     54                yield( rand48( 5 ) );
    5555                insert( prod.buffer, 1 );
    5656        } // for
     
    6969        cons.sum = 0;
    7070        for ( ;; ) {
    71                 yield( random( 5 ) );
     71                yield( rand48( 5 ) );
    7272                int item = remove( cons.buffer );
    7373                if ( item == -1 ) break;                                // sentinel ?
     
    9090        processor p;
    9191
    92         //random_seed( getpid() );
    93         random_seed( 1003 );
     92        //rand48seed( getpid() );
     93        rand48seed( 1003 );
    9494
    9595        for ( i = 0; i < Cons; i += 1 ) {                       // create consumers
Note: See TracChangeset for help on using the changeset viewer.