Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/bits/locks.hfa

    ra7aea7d r6d1790c  
    283283                void ^?{}(future_t &) {}
    284284
    285                 void reset(future_t & this) {
    286                         // needs to be in 0p or 1p
    287                         __atomic_exchange_n( &this.ptr, 0p, __ATOMIC_SEQ_CST);
    288                 }
    289 
    290285                // check if the future is available
    291286                bool available( future_t & this ) {
     
    345340
    346341                // Mark the future as abandoned, meaning it will be deleted by the server
    347                 bool abandon( future_t & this ) {
    348                         /* paranoid */ verify( this.ptr != 3p );
    349 
    350                         // Mark the future as abandonned
     342                void abandon( future_t & this ) {
    351343                        struct oneshot * got = __atomic_exchange_n( &this.ptr, 3p, __ATOMIC_SEQ_CST);
    352 
    353                         // If the future isn't already fulfilled, let the server delete it
    354                         if( got == 0p ) return false;
    355344
    356345                        // got == 2p: the future is ready but the context hasn't fully been consumed
     
    358347                        if( got == 2p ) {
    359348                                while( this.ptr != 1p ) Pause();
    360                                 got = 1p;
    361                         }
    362 
    363                         // The future is completed delete it now
    364                         /* paranoid */ verify( this.ptr != 1p );
    365                         free( &this );
    366                         return true;
     349                        }
     350                        return;
    367351                }
    368352
Note: See TracChangeset for help on using the changeset viewer.