Ignore:
File:
1 edited

Legend:

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

    rbeeff61e r9a9ca36  
    1515};
    1616
     17
    1718struct __mutex_stmt_lock_guard {
    1819    void ** lockarr;
     
    2930
    3031forall(L & | is_lock(L)) {
    31     static inline void * __get_mutexstmt_lock_ptr( L & this ) { return &this; }
    32     static inline L __get_mutexstmt_lock_type( L & this ) {}
    33     static inline L __get_mutexstmt_lock_type( L * this ) {}
     32
     33    struct scoped_lock {
     34        L * internal_lock;
     35    };
     36
     37    static inline void ?{}( scoped_lock(L) & this, L & internal_lock ) {
     38        this.internal_lock = &internal_lock;
     39        lock(internal_lock);
     40    }
     41   
     42    static inline void ^?{}( scoped_lock(L) & this ) with(this) {
     43        unlock(*internal_lock);
     44    }
     45
     46    static inline void * __get_mutexstmt_lock_ptr( L & this ) {
     47        return &this;
     48    }
     49
     50    static inline L __get_mutexstmt_lock_type( L & this );
     51
     52    static inline L __get_mutexstmt_lock_type( L * this );
    3453}
Note: See TracChangeset for help on using the changeset viewer.