Ignore:
Timestamp:
Jun 10, 2022, 2:59:53 PM (2 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, master, pthread-emulation, qualifiedEnum
Children:
10ba012
Parents:
1c56bf7
Message:

Fixed wait_any to be polymorphic on future type.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel/fwd.hfa

    r1c56bf7 rf3da205  
    383383
    384384                        // Wait for any future to be fulfilled
    385                         future_t & wait_any( future_t * futures, size_t num_futures ) {
     385                        forall(T& | sized(T) | { bool setup( T&, oneshot & ); bool retract( T&, oneshot & ); })
     386                        T & wait_any( T * futures, size_t num_futures ) {
    386387                                oneshot temp;
    387388
     
    391392                                        if( !setup(futures[i], temp) ) return futures[i];
    392393                                }
    393                                
     394
    394395                                // Wait context is setup, just wait on it
    395396                                wait( temp );
    396                                
     397
    397398                                size_t ret;
    398399                                // attempt to retract all futures
     
    400401                                        if ( retract( futures[i], temp ) ) ret = i;
    401402                                }
    402                                
     403
    403404                                return futures[ret];
    404405                        }
Note: See TracChangeset for help on using the changeset viewer.