Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tests/multi-monitor.c

    rbcda04c r83a071f9  
    1010static monitor_t m1, m2, m3;
    1111
    12 void increment( monitor_t * mutex p1, monitor_t * mutex p2, int * value ) {
    13         *value += 1;
     12void increment( monitor_t & mutex p1, monitor_t & mutex p2, int & value ) {
     13        value += 1;
    1414}
    1515
    16 struct MyThread {
    17         thread_desc __thrd;
     16thread MyThread {
    1817        int target;
    1918};
    2019
    21 DECL_THREAD(MyThread);
    22 
    23 void ?{}( MyThread * this, int target ) {
    24         this->target = target;
     20void ?{}( MyThread & this, int target ) {
     21        this.target = target;
    2522}
    2623
    27 void ^?{}( MyThread * mutex this ) {}
     24void ^?{}( MyThread & mutex this ) {}
    2825
    29 void main( MyThread* this ) {
     26void main( MyThread & this ) {
    3027        for(int i = 0; i < 1000000; i++) {
    31                 choose(this->target) {
    32                         case 0: increment( &m1, &m2, &global12 );
    33                         case 1: increment( &m2, &m3, &global23 );
    34                         case 2: increment( &m1, &m3, &global13 );
     28                choose(this.target) {
     29                        case 0: increment( m1, m2, global12 );
     30                        case 1: increment( m2, m3, global23 );
     31                        case 2: increment( m1, m3, global13 );
    3532                }
    3633        }
     34}
     35
     36forall(dtype T | sized(T) | { void ^?{}(T & mutex); })
     37void delete_mutex(T * x) {
     38        ^(*x){};
     39        free(x);
    3740}
    3841
     
    4043        processor p;
    4144        {
    42                 scoped(MyThread) * f[6];
     45                MyThread * f[6];
    4346                for(int i = 0; i < 6; i++) {
    44                         f[i] = ((scoped(MyThread) *)malloc()){ i % 3 };
     47                        f[i] = new(i % 3);
    4548                }
    4649
    4750                for(int i = 0; i < 6; i++) {
    48                         delete( f[i] );
     51                        delete_mutex( f[i] );
    4952                }
    5053        }
Note: See TracChangeset for help on using the changeset viewer.