Changes in / [49caf644:c635047]


Ignore:
Files:
2 edited

Legend:

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

    r49caf644 rc635047  
    326326    return retval;
    327327}
    328 static inline void remove( channel(T) & chan ) { T elem = (T)remove( chan ); }
    329 
    330328
    331329///////////////////////////////////////////////////////////////////////////////////////////
     
    463461}
    464462
    465 // type used by select statement to capture a chan read as the selected operation that doesn't have a param to read to
    466 struct chan_read_no_ret {
    467     T ret;
    468     chan_read( T ) cr;
    469 };
    470 __CFA_SELECT_GET_TYPE( chan_read_no_ret(T) );
    471 
    472 static inline void ?{}( chan_read_no_ret(T) & this, channel(T) & chan ) {
    473     this.cr{ chan, this.ret };
    474 }
    475 static inline chan_read_no_ret(T) remove( channel(T) & chan ) { chan_read_no_ret(T) cr{ chan }; return cr; }
    476 static inline bool register_select( chan_read_no_ret(T) & this, select_node & node ) { return register_select( this.cr, node ); }
    477 static inline bool unregister_select( chan_read_no_ret(T) & this, select_node & node ) { return unregister_select( this.cr, node ); }
    478 static inline bool on_selected( chan_read_no_ret(T) & this, select_node & node ) { return on_selected( this.cr, node ); }
    479 
    480463// type used by select statement to capture a chan write as the selected operation
    481464struct chan_write {
  • tests/concurrency/waituntil/repeat_close.cfa

    r49caf644 rc635047  
    3131    try {
    3232        for( ;; ) {
    33             waituntil( remove(F) ) { F_removes++; }
    34             or waituntil( remove(E) ) { E_removes++; }
    35             or waituntil( remove(D) ) { D_removes++; }
    36             or waituntil( remove(C) ) { C_removes++; }
    37             or waituntil( remove(B) ) { B_removes++; }
    38             or waituntil( remove(A) ) { A_removes++; }
     33            waituntil( in << F ) { F_removes++; }
     34            or waituntil( in << E ) { E_removes++; }
     35            or waituntil( in << D ) { D_removes++; }
     36            or waituntil( in << C ) { C_removes++; }
     37            or waituntil( in << B ) { B_removes++; }
     38            or waituntil( in << A ) { A_removes++; }
    3939        }
    4040    } catchResume ( channel_closed * e ) { } // continue to remove until would block
Note: See TracChangeset for help on using the changeset viewer.