Changeset d61d034


Ignore:
Timestamp:
Jan 13, 2023, 4:30:28 PM (16 months ago)
Author:
JiadaL <j82liang@…>
Branches:
ADT, ast-experimental, master
Children:
34a1d2e, 997185e
Parents:
8bb86ce (diff), 42b739d7 (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:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
3 edited

Legend:

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

    r8bb86ce rd61d034  
    3535static inline void ?{}( channel(T) &c ){ ((channel(T) &)c){ 0 }; }
    3636static inline void ^?{}( channel(T) &c ) with(c) { delete( buffer ); }
    37 inline size_t get_count( channel(T) & chan ) with(chan) { return count; }
    38 inline size_t get_size( channel(T) & chan ) with(chan) { return size; }
     37static inline size_t get_count( channel(T) & chan ) with(chan) { return count; }
     38static inline size_t get_size( channel(T) & chan ) with(chan) { return size; }
     39static inline bool has_waiters( channel(T) & chan ) with(chan) { return !empty( cons ) || !empty( prods ); }
     40static inline bool has_waiting_consumers( channel(T) & chan ) with(chan) { return !empty( cons ); }
     41static inline bool has_waiting_producers( channel(T) & chan ) with(chan) { return !empty( prods ); }
    3942
    40 inline void insert_( channel(T) & chan, T elem ) with(chan) {
     43static inline void insert_( channel(T) & chan, T elem ) with(chan) {
    4144    memcpy((void *)&buffer[back], (void *)&elem, sizeof(T));
    4245    count += 1;
     
    4649
    4750
    48 inline void insert( channel(T) & chan, T elem ) with(chan) {
     51static inline void insert( channel(T) & chan, T elem ) with(chan) {
    4952    lock( mutex_lock );
    5053
     
    7275}
    7376
    74 inline T remove( channel(T) & chan ) with(chan) {
     77static inline T remove( channel(T) & chan ) with(chan) {
    7578    lock( mutex_lock );
    7679    T retval;
  • tests/concurrent/channels/parallel_harness.hfa

    r8bb86ce rd61d034  
    3838
    3939volatile bool cons_done = false, prod_done = false;
     40volatile int cons_done_count = 0;
    4041size_t cons_check = 0, prod_check = 0;
    4142
     
    6465    lock(o);
    6566    total_operations += runs;
     67    cons_done_count++;
    6668    cons_check = cons_check ^ my_check;
    6769    // sout | "C: " | runs;
     
    128130    }
    129131
    130     sleep(10`s);
     132    sleep(1`s);
    131133    prod_done = true;
    132134
     
    137139    sout | "prods";
    138140    cons_done = true;
    139     for ( i; Channels ) {
    140         // sout | get_count( channels[i] );
    141         if ( get_count( channels[i] ) < Consumers ){
    142             #ifdef BIG
    143             bigObject b{0};
    144             #endif
    145             for ( j; Consumers ) {
     141    while( cons_done_count != Consumers * Channels ) {
     142        for ( i; Channels ) {
     143            if ( has_waiting_consumers( channels[i] ) ){
    146144                #ifdef BIG
     145                bigObject b{0};
    147146                insert( channels[i], b );
    148147                #else
     
    151150            }
    152151        }
    153     }
     152       
     153    }
     154    // for ( i; Channels ) {
     155    //     // sout | get_count( channels[i] );
     156    //     if ( get_count( channels[i] ) < Consumers ){
     157    //         #ifdef BIG
     158    //         bigObject b{0};
     159    //         #endif
     160    //         for ( j; Consumers ) {
     161    //             #ifdef BIG
     162    //             insert( channels[i], b );
     163    //             #else
     164    //             insert( channels[i], 0 );
     165    //             #endif
     166    //         }
     167    //     }
     168    // }
    154169    sout | "cons";
    155170    for ( i; Consumers * Channels ) {
  • tests/concurrent/channels/zero_size.cfa

    r8bb86ce rd61d034  
    11#include "parallel_harness.hfa"
    22
    3 size_t Processors = 10, Channels = 10, Producers = 40, Consumers = 40, ChannelSize = 0;
     3size_t Processors = 10, Channels = 1, Producers = 10, Consumers = 10, ChannelSize = 0;
    44
    55int main() {
Note: See TracChangeset for help on using the changeset viewer.