Ignore:
Timestamp:
Aug 31, 2023, 11:31:15 PM (2 years ago)
Author:
JiadaL <j82liang@…>
Branches:
master
Children:
950c58e
Parents:
92355883 (diff), 686912c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Resolve conflict

File:
1 edited

Legend:

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

    r92355883 r2a301ff  
    1919#include "invoke.h"
    2020#include "../exception.hfa"
     21
     22//-----------------------------------------------------------------------------
     23// Type used to store and queue nonlocal exceptions on coroutines
     24struct nonlocal_exception {
     25    exception_t * the_exception;
     26    nonlocal_exception * next;
     27};
     28static inline void ?{} ( nonlocal_exception & this, exception_t * ex ) with(this) {
     29    the_exception = ex;
     30    next = 0p;
     31}
     32
     33static inline nonlocal_exception *& get_next( nonlocal_exception & this ) __attribute__((const)) {
     34    return this.next;
     35}
    2136
    2237//-----------------------------------------------------------------------------
     
    203218}
    204219
     220// non local ehm and coroutine utility routines
     221bool poll( coroutine$ * cor );
     222bool poll();
     223coroutine$ * resumer();
     224
     225forall(T & | is_coroutine(T)) {
     226    void enable_ehm( T & cor );
     227    void disable_ehm( T & cor );
     228    bool poll( T & cor );
     229    bool checked_poll( T & cor );
     230    coroutine$ * resumer( T & cor );
     231}
     232
     233// trait for exceptions able to be resumed at another coroutine
     234forall(exceptT *, T & | is_coroutine(T))
     235trait ehm_resume_at { void $throwResume(exceptT &); };
     236
     237// general resumeAt
     238forall(exceptT *, T & | ehm_resume_at( exceptT, T ))
     239void resumeAt( T & receiver, exceptT & ex );
     240
     241// resumeAt for underlying coroutine$ type
     242forall(exceptT * | { void $throwResume(exceptT &); })
     243void resumeAt( coroutine$ * receiver, exceptT & ex );
     244
    205245// Local Variables: //
    206246// mode: c //
Note: See TracChangeset for help on using the changeset viewer.