Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/cofor.hfa

    ree9ad40 re4c3819  
    55typedef void (*__cofor_body_t)( ssize_t );
    66
    7 void __Cofor__( ssize_t low, ssize_t high, __cofor_body_t loop_body );
     7void cofor( ssize_t low, ssize_t high, __cofor_body_t loop_body );
    88
    99#define COFOR( lidname, low, high, loopbody ) \
     
    1212                        loopbody \
    1313                } \
    14                 __Cofor__( low, high, __CFA_loopLambda__ ); \
     14                cofor( low, high, __CFA_loopLambda__ ); \
    1515        }
    1616
    1717//////////////////////////////////////////////////////////////////////////////////////////
    18 // corun
     18// parallel (COBEGIN/COEND)
     19typedef void (*parallel_stmt_t)( void * );
    1920
    20 //
    21 typedef void (*__CFA_corun_lambda_t)( void );
    22 
    23 // used to run a corun statement in parallel
    24 thread co_runner {
    25         __CFA_corun_lambda_t body;
    26 };
    27 
    28 // wraps a co_runner to provide RAII deallocation
    29 struct runner_block {
    30     co_runner * runner;
    31 };
    32 static inline void ?{}( co_runner & this, __CFA_corun_lambda_t body ) { this.body = body; }
    33 
    34 void main( co_runner & this ) with( this ) { body(); }
    35 
    36 static inline void ?{}( runner_block & this ) {}
    37 static inline void ?{}( runner_block & this, __CFA_corun_lambda_t body ) {
    38     (*(this.runner = malloc())){ body };
    39 }
    40 
    41 static inline void ^?{}( runner_block & this ) {
    42     delete( this.runner );
    43 }
    44 
     21void parallel( parallel_stmt_t * stmts, void ** args, size_t num );
Note: See TracChangeset for help on using the changeset viewer.