Changeset b7b3e41 for tests/concurrency/actors
- Timestamp:
- Jun 19, 2023, 1:57:11 PM (3 years ago)
- Branches:
- master, stuck-waitfor-destruct
- Children:
- adc73a5
- Parents:
- fa5e1aa5 (diff), 33d4bc8 (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. - Location:
- tests/concurrency/actors
- Files:
-
- 2 added
- 9 edited
-
.expect/inherit.txt (modified) (1 diff)
-
.expect/inline.txt (added)
-
dynamic.cfa (modified) (3 diffs)
-
executor.cfa (modified) (2 diffs)
-
inherit.cfa (modified) (3 diffs)
-
inline.cfa (added)
-
matrix.cfa (modified) (2 diffs)
-
pingpong.cfa (modified) (2 diffs)
-
poison.cfa (modified) (3 diffs)
-
static.cfa (modified) (3 diffs)
-
types.cfa (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/concurrency/actors/.expect/inherit.txt
rfa5e1aa5 rb7b3e41 4 4 A 5 5 A 6 A 7 A 6 8 Finished -
tests/concurrency/actors/dynamic.cfa
rfa5e1aa5 rb7b3e41 19 19 void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; } 20 20 21 Allocation receive( derived_actor & receiver, derived_msg & msg ) {21 allocation receive( derived_actor & receiver, derived_msg & msg ) { 22 22 if ( msg.cnt >= Times ) { 23 23 sout | "Done"; … … 28 28 derived_actor * d_actor = alloc(); 29 29 (*d_actor){}; 30 *d_actor <<*d_msg;30 *d_actor | *d_msg; 31 31 return Delete; 32 32 } … … 58 58 derived_actor * d_actor = alloc(); 59 59 (*d_actor){}; 60 *d_actor <<*d_msg;60 *d_actor | *d_msg; 61 61 62 62 printf("stopping\n"); -
tests/concurrency/actors/executor.cfa
rfa5e1aa5 rb7b3e41 24 24 struct d_msg { inline message; } shared_msg; 25 25 26 Allocation receive( d_actor & this, d_msg & msg ) with( this ) {26 allocation receive( d_actor & this, d_msg & msg ) with( this ) { 27 27 if ( recs == rounds ) return Finished; 28 28 if ( recs % Batch == 0 ) { 29 29 for ( i; Batch ) { 30 gstart[sends % Set] <<shared_msg;30 gstart[sends % Set] | shared_msg; 31 31 sends += 1; 32 32 } … … 94 94 95 95 for ( i; Actors ) { 96 actors[i] <<shared_msg;96 actors[i] | shared_msg; 97 97 } // for 98 98 -
tests/concurrency/actors/inherit.cfa
rfa5e1aa5 rb7b3e41 7 7 8 8 struct Server { inline actor; }; 9 9 10 struct Server2 { inline Server; int b; }; 11 void ^?{}( Server2 & this ) { mutex(sout) sout | 'A'; } 12 10 13 struct D_msg { int a; inline message; }; 11 struct D_msg2 { inline D_msg; };12 13 void ^?{}( Server2 & this ) { mutex(sout) sout | 'A'; }14 14 void ?{}( D_msg & this ) { set_allocation( this, Delete ); } 15 15 void ^?{}( D_msg & this ) { mutex(sout) sout | 'A'; } 16 16 17 Allocation handle() { 17 struct D_msg2 { inline D_msg; }; 18 19 allocation handle() { 18 20 return Finished; 19 21 } 20 22 21 Allocation receive( Server & receiver, D_msg & msg ) { return handle(); }22 Allocation receive( Server & receiver, D_msg2 & msg ) { return handle(); }23 Allocation receive( Server2 & receiver, D_msg & msg ) { return Delete; }24 Allocation receive( Server2 & receiver, D_msg2 & msg ) { return Delete; }23 allocation receive( Server & receiver, D_msg & msg ) { return handle(); } 24 allocation receive( Server & receiver, D_msg2 & msg ) { return handle(); } 25 allocation receive( Server2 & receiver, D_msg & msg ) { return Delete; } 26 allocation receive( Server2 & receiver, D_msg2 & msg ) { return Delete; } 25 27 26 28 int main() { … … 30 32 D_msg * dm = alloc(); 31 33 (*dm){}; 32 D_msg2 dm2; 34 D_msg2 * dm2 = alloc(); 35 (*dm2){}; 33 36 Server2 * s = alloc(); 34 37 (*s){}; 35 38 Server2 * s2 = alloc(); 36 39 (*s2){}; 37 *s <<*dm;38 *s2 <<dm2;40 *s | *dm; 41 *s2 | *dm2; 39 42 stop_actor_system(); 40 43 } … … 44 47 D_msg * dm = alloc(); 45 48 (*dm){}; 46 D_msg2 dm2; 47 s[0] << *dm; 48 s[1] << dm2; 49 D_msg2 * dm2 = alloc(); 50 (*dm2){}; 51 s[0] | *dm; 52 s[1] | *dm2; 49 53 stop_actor_system(); 50 54 } -
tests/concurrency/actors/matrix.cfa
rfa5e1aa5 rb7b3e41 24 24 } 25 25 26 Allocation receive( derived_actor & receiver, derived_msg & msg ) {26 allocation receive( derived_actor & receiver, derived_msg & msg ) { 27 27 for ( unsigned int i = 0; i < yc; i += 1 ) { // multiply X_row by Y_col and sum products 28 28 msg.Z[i] = 0; … … 105 105 106 106 for ( unsigned int r = 0; r < xr; r += 1 ) { 107 actors[r] <<messages[r];107 actors[r] | messages[r]; 108 108 } // for 109 109 -
tests/concurrency/actors/pingpong.cfa
rfa5e1aa5 rb7b3e41 19 19 size_t times = 100000; 20 20 21 Allocation receive( ping & receiver, p_msg & msg ) {21 allocation receive( ping & receiver, p_msg & msg ) { 22 22 msg.count++; 23 23 if ( msg.count > times ) return Finished; 24 24 25 Allocation retval = Nodelete;25 allocation retval = Nodelete; 26 26 if ( msg.count == times ) retval = Finished; 27 *po <<msg;27 *po | msg; 28 28 return retval; 29 29 } 30 30 31 Allocation receive( pong & receiver, p_msg & msg ) {31 allocation receive( pong & receiver, p_msg & msg ) { 32 32 msg.count++; 33 33 if ( msg.count > times ) return Finished; 34 34 35 Allocation retval = Nodelete;35 allocation retval = Nodelete; 36 36 if ( msg.count == times ) retval = Finished; 37 *pi <<msg;37 *pi | msg; 38 38 return retval; 39 39 } … … 53 53 pi = &pi_actor; 54 54 p_msg m; 55 pi_actor <<m;55 pi_actor | m; 56 56 stop_actor_system(); 57 57 -
tests/concurrency/actors/poison.cfa
rfa5e1aa5 rb7b3e41 18 18 Server s[10]; 19 19 for ( i; 10 ) { 20 s[i] << FinishedMsg;20 s[i] | finished_msg; 21 21 } 22 22 stop_actor_system(); … … 29 29 Server * s = alloc(); 30 30 (*s){}; 31 (*s) << DeleteMsg;31 (*s) | delete_msg; 32 32 } 33 33 stop_actor_system(); … … 39 39 Server s[10]; 40 40 for ( i; 10 ) 41 s[i] << DestroyMsg;41 s[i] | destroy_msg; 42 42 stop_actor_system(); 43 43 for ( i; 10 ) -
tests/concurrency/actors/static.cfa
rfa5e1aa5 rb7b3e41 19 19 void ?{}( derived_msg & this ) { ((derived_msg &)this){ 0 }; } 20 20 21 Allocation receive( derived_actor & receiver, derived_msg & msg ) {21 allocation receive( derived_actor & receiver, derived_msg & msg ) { 22 22 if ( msg.cnt >= Times ) { 23 23 sout | "Done"; … … 25 25 } 26 26 msg.cnt++; 27 receiver <<msg;27 receiver | msg; 28 28 return Nodelete; 29 29 } … … 55 55 derived_actor actor; 56 56 57 actor <<msg;57 actor | msg; 58 58 59 59 printf("stopping\n"); -
tests/concurrency/actors/types.cfa
rfa5e1aa5 rb7b3e41 20 20 21 21 // this isn't a valid receive routine since int is not a message type 22 Allocation receive( derived_actor & receiver, int i ) with( receiver ) {22 allocation receive( derived_actor & receiver, int i ) with( receiver ) { 23 23 mutex(sout) sout | i; 24 24 counter++; … … 27 27 } 28 28 29 Allocation receive( derived_actor & receiver, d_msg & msg ) {29 allocation receive( derived_actor & receiver, d_msg & msg ) { 30 30 return receive( receiver, msg.num ); 31 31 } … … 36 36 }; 37 37 38 Allocation receive( derived_actor2 & receiver, d_msg & msg ) {38 allocation receive( derived_actor2 & receiver, d_msg & msg ) { 39 39 mutex(sout) sout | msg.num; 40 40 return Finished; … … 48 48 }; 49 49 50 Allocation receive( derived_actor3 & receiver, d_msg & msg ) {50 allocation receive( derived_actor3 & receiver, d_msg & msg ) { 51 51 mutex(sout) sout | msg.num; 52 52 if ( msg.num == -1 ) return Nodelete; … … 54 54 } 55 55 56 Allocation receive( derived_actor3 & receiver, d_msg2 & msg ) {56 allocation receive( derived_actor3 & receiver, d_msg2 & msg ) { 57 57 mutex(sout) sout | msg.num; 58 58 return Finished; … … 72 72 b.num = 1; 73 73 c.num = 2; 74 a << b <<c;74 a | b | c; 75 75 stop_actor_system(); 76 76 … … 80 80 d_msg d_ac2_msg; 81 81 d_ac2_msg.num = 3; 82 d_ac2_0 <<d_ac2_msg;83 d_ac2_1 <<d_ac2_msg;82 d_ac2_0 | d_ac2_msg; 83 d_ac2_1 | d_ac2_msg; 84 84 stop_actor_system(); 85 85 … … 93 93 d_msg d_ac23_msg; 94 94 d_ac23_msg.num = 4; 95 d_ac3_0 <<d_ac23_msg;96 d_ac2_2 <<d_ac23_msg;95 d_ac3_0 | d_ac23_msg; 96 d_ac2_2 | d_ac23_msg; 97 97 stop_actor_system(); 98 98 } // RAII to clean up executor … … 107 107 b1.num = -1; 108 108 c2.num = 5; 109 a3 << b1 <<c2;109 a3 | b1 | c2; 110 110 stop_actor_system(); 111 111 } // RAII to clean up executor … … 120 120 b1.num = -1; 121 121 c2.num = 5; 122 a4 << b1 <<c2;122 a4 | b1 | c2; 123 123 stop_actor_system(); 124 124 } // RAII to clean up executor
Note:
See TracChangeset
for help on using the changeset viewer.