Ignore:
File:
1 edited

Legend:

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

    rfe293bf r3f0b062  
    2828    unlock( lock );
    2929    park();
     30    #if defined(__ARM_ARCH)
     31    __atomic_thread_fence( __ATOMIC_SEQ_CST );
     32    #endif
    3033    return sn.extra == 0p;
    3134}
     
    130133static inline void __cons_handoff( channel(T) & chan, T & elem ) with(chan) {
    131134    memcpy( cons`first.extra, (void *)&elem, sizeof(T) ); // do waiting consumer work
     135    #if defined(__ARM_ARCH)
     136    __atomic_thread_fence( __ATOMIC_SEQ_CST );
     137    #endif
    132138    wake_one( cons );
    133139}
     
    136142static inline void __prods_handoff( channel(T) & chan, T & retval ) with(chan) {
    137143    memcpy( (void *)&retval, prods`first.extra, sizeof(T) );
     144    #if defined(__ARM_ARCH)
     145    __atomic_thread_fence( __ATOMIC_SEQ_CST );
     146    #endif
    138147    wake_one( prods );
    139148}
Note: See TracChangeset for help on using the changeset viewer.