source:
tests/concurrency/actors/pingpong.cfa@
ad47ec4
| Last change on this file since ad47ec4 was 7edf912, checked in by , 2 years ago | |
|---|---|
|
|
| File size: 1.2 KB | |
| Rev | Line | |
|---|---|---|
| [1c75ef8] | 1 | #include <fstream.hfa> |
| 2 | #include <stdlib.hfa> | |
| 3 | #include <string.h> | |
| 4 | #include <stdio.h> | |
| 5 | #include <mutex_stmt.hfa> | |
| 6 | #include <actor.hfa> | |
| 7 | ||
| [4933f18] | 8 | struct ping { inline actor; }; |
| 9 | struct pong { inline actor; }; | |
| [1c75ef8] | 10 | |
| 11 | struct p_msg { | |
| [7edf912] | 12 | inline message; |
| 13 | size_t count; | |
| [1c75ef8] | 14 | }; |
| [7edf912] | 15 | //static inline void ?{}( p_msg & this ) { ((message &)this){}; this.count = 0; } |
| 16 | static inline void ?{}( p_msg & this ) { this.count = 0; } | |
| [1c75ef8] | 17 | |
| 18 | ping * pi; | |
| 19 | pong * po; | |
| 20 | size_t times = 100000; | |
| 21 | ||
| [c880a7b] | 22 | allocation receive( ping & receiver, p_msg & msg ) { |
| [7edf912] | 23 | msg.count++; |
| 24 | if ( msg.count > times ) return Finished; | |
| [1c75ef8] | 25 | |
| [7edf912] | 26 | allocation retval = Nodelete; |
| 27 | if ( msg.count == times ) retval = Finished; | |
| 28 | *po | msg; | |
| 29 | return retval; | |
| [1c75ef8] | 30 | } |
| 31 | ||
| [c880a7b] | 32 | allocation receive( pong & receiver, p_msg & msg ) { |
| [7edf912] | 33 | msg.count++; |
| 34 | if ( msg.count > times ) return Finished; | |
| 35 | ||
| 36 | allocation retval = Nodelete; | |
| 37 | if ( msg.count == times ) retval = Finished; | |
| 38 | *pi | msg; | |
| 39 | return retval; | |
| [1c75ef8] | 40 | } |
| 41 | ||
| 42 | size_t Processors = 2; | |
| 43 | ||
| 44 | int main( int argc, char * argv[] ) { | |
| [7edf912] | 45 | sout | "start"; |
| [1c75ef8] | 46 | |
| [7edf912] | 47 | processor p[Processors - 1]; |
| [1c75ef8] | 48 | |
| [7edf912] | 49 | start_actor_system( Processors ); // test passing number of processors |
| 50 | ping pi_actor; | |
| 51 | pong po_actor; | |
| 52 | po = &po_actor; | |
| 53 | pi = &pi_actor; | |
| 54 | p_msg m; | |
| 55 | pi_actor | m; | |
| 56 | stop_actor_system(); | |
| [1c75ef8] | 57 | |
| [7edf912] | 58 | sout | "end"; |
| [50be8af5] | 59 | } |
Note:
See TracBrowser
for help on using the repository browser.