Ignore:
File:
1 edited

Legend:

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

    r83a071f9 rbcda04c  
    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 thread MyThread {
     16struct MyThread {
     17        thread_desc __thrd;
    1718        int target;
    1819};
    1920
    20 void ?{}( MyThread & this, int target ) {
    21         this.target = target;
     21DECL_THREAD(MyThread);
     22
     23void ?{}( MyThread * this, int target ) {
     24        this->target = target;
    2225}
    2326
    24 void ^?{}( MyThread & mutex this ) {}
     27void ^?{}( MyThread * mutex this ) {}
    2528
    26 void main( MyThread & this ) {
     29void main( MyThread* this ) {
    2730        for(int i = 0; i < 1000000; i++) {
    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 );
     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 );
    3235                }
    3336        }
    34 }
    35 
    36 forall(dtype T | sized(T) | { void ^?{}(T & mutex); })
    37 void delete_mutex(T * x) {
    38         ^(*x){};
    39         free(x);
    4037}
    4138
     
    4340        processor p;
    4441        {
    45                 MyThread * f[6];
     42                scoped(MyThread) * f[6];
    4643                for(int i = 0; i < 6; i++) {
    47                         f[i] = new(i % 3);
     44                        f[i] = ((scoped(MyThread) *)malloc()){ i % 3 };
    4845                }
    4946
    5047                for(int i = 0; i < 6; i++) {
    51                         delete_mutex( f[i] );
     48                        delete( f[i] );
    5249                }
    5350        }
Note: See TracChangeset for help on using the changeset viewer.