Ignore:
Timestamp:
Dec 26, 2020, 6:10:40 PM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
ac5816d
Parents:
83c7e3c
Message:

Fixed locks.hfa to no longer depend on private headers bits/algorithm.hfa and alarm.hfa

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/locks.cfa

    r83c7e3c rc20533ea  
    176176size_t get_recursion_count( multiple_acquisition_lock & this ){ return get_recursion_count( (blocking_lock &)this ); }
    177177
    178 ///////////////////////////////////////////////////////////////////
    179 //// condition variable
    180 ///////////////////////////////////////////////////////////////////
    181178
    182179forall(dtype L | is_blocking_lock(L)) {
     180        struct alarm_node_wrap {
     181                alarm_node_t alarm_node;
     182                condition_variable(L) * cond;
     183                info_thread(L) * i;
     184        };
     185
     186        void ?{}( alarm_node_wrap(L) & this, Time alarm, Duration period, Alarm_Callback callback ) {
     187                this.alarm_node{ callback, alarm, period };
     188        }
     189
     190        void ^?{}( alarm_node_wrap(L) & this ) { }
    183191
    184192        void timeout_handler ( alarm_node_wrap(L) & this ) with( this ) {
     
    205213        void alarm_node_wrap_cast( alarm_node_t & a ) { timeout_handler( (alarm_node_wrap(L) &)a ); }
    206214
     215}
     216
     217///////////////////////////////////////////////////////////////////
     218//// condition variable
     219///////////////////////////////////////////////////////////////////
     220
     221forall(dtype L | is_blocking_lock(L)) {
     222
    207223        void ?{}( condition_variable(L) & this ){
    208224                this.lock{};
     
    212228
    213229        void ^?{}( condition_variable(L) & this ){ }
    214 
    215         void ?{}( alarm_node_wrap(L) & this, Time alarm, Duration period, Alarm_Callback callback ) {
    216                 this.alarm_node{ callback, alarm, period };
    217         }
    218 
    219         void ^?{}( alarm_node_wrap(L) & this ) { }
    220230
    221231        void process_popped( condition_variable(L) & this, info_thread(L) & popped ) with( this ) {
Note: See TracChangeset for help on using the changeset viewer.