Changes in tests/coroutine/prodcons.c [18cf979:200fcb3]
- File:
-
- 1 edited
-
tests/coroutine/prodcons.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/coroutine/prodcons.c
r18cf979 r200fcb3 10 10 // Created On : Mon Sep 18 12:23:39 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 12 23:04:49201813 // Update Count : 5 312 // Last Modified On : Tue Dec 11 21:58:25 2018 13 // Update Count : 52 14 14 // 15 15 … … 24 24 25 25 coroutine Prod { 26 Cons &c;26 Cons * c; 27 27 int N, money, receipt; 28 28 }; … … 30 30 // 1st resume starts here 31 31 for ( i; N ) { // N pairs of values 32 int p1 = random( 100 ), p2 = random( 100 ); 32 int p1 = random( 100 ); 33 int p2 = random( 100 ); 33 34 sout | p1 | " " | p2; 34 int status = delivery( c, p1, p2 ); 35 sout | " $" | money | nl | status; 35 int status = delivery( *c, p1, p2 ); 36 sout | " $" | money; 37 sout | status; 36 38 receipt += 1; 37 39 } 38 stop( c );40 stop( *c ); 39 41 sout | "prod stops"; 40 42 } … … 45 47 } 46 48 void start( Prod & prod, int N, Cons &c ) { 47 &prod.c = &c; 48 prod.[N, receipt] = [N, 0]; 49 prod.N = N; 50 prod.c = &c; 51 prod.receipt = 0; 49 52 resume( prod ); // activate main 50 53 } 51 54 52 55 coroutine Cons { 53 Prod &p;56 Prod * p; 54 57 int p1, p2, status; 55 58 bool done; 56 59 }; 57 60 void ?{}( Cons & cons, Prod & p ) { 58 &cons.p = &p; 59 cons.[status, done ] = [0, false]; 61 cons.p = &p; 62 cons.status = 0; 63 cons.done = false; 60 64 } 61 65 void ^?{}( Cons & cons ) {} … … 64 68 int money = 1, receipt; 65 69 for ( ; ! done; ) { 66 sout | p1 | " " | p2 | nl | " $" | money; 70 sout | p1 | " " | p2; 71 sout | " $" | money; 67 72 status += 1; 68 receipt = payment( p, money );73 receipt = payment( *p, money ); 69 74 sout | " #" | receipt; 70 75 money += 1; … … 73 78 } 74 79 int delivery( Cons & cons, int p1, int p2 ) { 75 cons.[p1, p2] = [p1, p2]; 80 cons.p1 = p1; 81 cons.p2 = p2; 76 82 resume( cons ); // main 1st time, then 77 83 return cons.status; // cons in payment
Note:
See TracChangeset
for help on using the changeset viewer.