Changes in / [16988e8:a85e44c]
- Location:
- src/tests
- Files:
-
- 2 added
- 2 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/tests/concurrent/examples/.expect/datingService.txt
r16988e8 ra85e44c 1 Girl:17 is dating Boy at 2 with ccode 172 Boy:2 is dating Girl 17 with ccode 173 Boy:14 is dating Girl 5 with ccode 54 Girl:5 is dating Boy at 14 with ccode 55 Boy:9 is dating Girl 10 with ccode 106 Girl:10 is dating Boy at 9 with ccode 107 Boy:1 is dating Girl 18 with ccode 188 Girl:18 is dating Boy at 1 with ccode 189 Boy:16 is dating Girl 3 with ccode 310 Girl:3 is dating Boy at 16 with ccode 311 Boy:5 is dating Girl 14 with ccode 1412 Girl:14 is dating Boy at 5 with ccode 1413 Boy:15 is dating Girl 4 with ccode 414 Girl:4 is dating Boy at 15 with ccode 415 Girl:0 is dating Boy at 19 with ccode 016 Boy:19 is dating Girl 0 with ccode 017 Girl:9 is dating Boy at 10 with ccode 918 Boy:10 is dating Girl 9 with ccode 919 Girl:11 is dating Boy at 8 with ccode 1120 Boy:8 is dating Girl 11 with ccode 1121 Boy:12 is dating Girl 7 with ccode 722 Girl:7 is dating Boy at 12 with ccode 723 Boy:11 is dating Girl 8 with ccode 824 Girl:8 is dating Boy at 11 with ccode 825 Girl:16 is dating Boy at 3 with ccode 1626 Boy:3 is dating Girl 16 with ccode 1627 Girl:15 is dating Boy at 4 with ccode 1528 Boy:4 is dating Girl 15 with ccode 1529 Girl:19 is dating Boy at 0 with ccode 1930 Boy:0 is dating Girl 19 with ccode 1931 Girl:2 is dating Boy at 17 with ccode 232 Boy:17 is dating Girl 2 with ccode 233 Boy:13 is dating Girl 6 with ccode 634 Girl:6 is dating Boy at 13 with ccode 635 Boy:7 is dating Girl 12 with ccode 1236 Girl:12 is dating Boy at 7 with ccode 1237 Girl:13 is dating Boy at 6 with ccode 1338 Boy:6 is dating Girl 13 with ccode 1339 Girl:1 is dating Boy at 18 with ccode 140 Boy:18 is dating Girl 1 with ccode 1 -
src/tests/concurrent/examples/boundedBuffer.c
r16988e8 ra85e44c 8 8 // Created On : Mon Oct 30 12:45:13 2017 9 9 // Last Modified By : Peter A. Buhr 10 // Last Modified On : Tue Dec 5 23:01:51201711 // Update Count : 1010 // Last Modified On : Mon Oct 30 23:02:46 2017 11 // Update Count : 9 12 12 // 13 13 … … 30 30 int query( Buffer & buffer ) { return buffer.count; } 31 31 32 void insert( Buffer & mutex buffer, int elem ) with( buffer ){33 if ( count == 20 ) wait(empty );34 elements[back] = elem;35 b ack = (back + 1 ) % 20;36 count += 1;37 signal( full );32 void insert( Buffer & mutex buffer, int elem ) { 33 if ( buffer.count == 20 ) wait( buffer.empty ); 34 buffer.elements[buffer.back] = elem; 35 buffer.back = ( buffer.back + 1 ) % 20; 36 buffer.count += 1; 37 signal( buffer.full ); 38 38 } 39 int remove( Buffer & mutex buffer ) with( buffer ){40 if ( count == 0 ) wait(full );41 int elem = elements[front];42 front = (front + 1 ) % 20;43 count -= 1;44 signal( empty );39 int remove( Buffer & mutex buffer ) { 40 if ( buffer.count == 0 ) wait( buffer.full ); 41 int elem = buffer.elements[buffer.front]; 42 buffer.front = ( buffer.front + 1 ) % 20; 43 buffer.count -= 1; 44 signal( buffer.empty ); 45 45 return elem; 46 46 } -
src/tests/concurrent/examples/datingService.c
r16988e8 ra85e44c 9 9 // Created On : Mon Oct 30 12:56:20 2017 10 10 // Last Modified By : Peter A. Buhr 11 // Last Modified On : Tue Dec 5 23:06:40201712 // Update Count : 1 811 // Last Modified On : Mon Oct 30 23:02:11 2017 12 // Update Count : 15 13 13 // 14 14 … … 26 26 }; // DatingService 27 27 28 unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ){29 if ( is_empty( Boys[ccode] ) ) {30 wait( Girls[ccode] );31 GirlPhoneNo = PhoneNo;28 unsigned int girl( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) { 29 if ( is_empty( ds.Boys[ccode] ) ) { 30 wait( ds.Girls[ccode] ); 31 ds.GirlPhoneNo = PhoneNo; 32 32 } else { 33 GirlPhoneNo = PhoneNo;34 signal_block( Boys[ccode] );33 ds.GirlPhoneNo = PhoneNo; 34 signal_block( ds.Boys[ccode] ); 35 35 } // if 36 return BoyPhoneNo;36 return ds.BoyPhoneNo; 37 37 } // DatingService girl 38 38 39 unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) with( ds ){40 if ( is_empty( Girls[ccode] ) ) {41 wait( Boys[ccode] );42 BoyPhoneNo = PhoneNo;39 unsigned int boy( DatingService & mutex ds, unsigned int PhoneNo, unsigned int ccode ) { 40 if ( is_empty( ds.Girls[ccode] ) ) { 41 wait( ds.Boys[ccode] ); 42 ds.BoyPhoneNo = PhoneNo; 43 43 } else { 44 BoyPhoneNo = PhoneNo;45 signal_block( Girls[ccode] );44 ds.BoyPhoneNo = PhoneNo; 45 signal_block( ds.Girls[ccode] ); 46 46 } // if 47 return GirlPhoneNo;47 return ds.GirlPhoneNo; 48 48 } // DatingService boy 49 49 … … 59 59 yield( random( 100 ) ); // don't all start at the same time 60 60 unsigned int partner = girl( g.TheExchange, g.id, g.ccode ); 61 sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl;61 //sout | "Girl:" | g.id | "is dating Boy at" | partner | "with ccode" | g.ccode | endl; 62 62 girlck[g.id] = partner; 63 63 } // Girl main … … 77 77 yield( random( 100 ) ); // don't all start at the same time 78 78 unsigned int partner = boy( b.TheExchange, b.id, b.ccode ); 79 sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl;79 //sout | " Boy:" | b.id | "is dating Girl" | partner | "with ccode" | b.ccode | endl; 80 80 boyck[b.id] = partner; 81 81 } // Boy main … … 92 92 Boy *boys[NoOfPairs]; 93 93 94 random_seed( /*getpid()*/ 103);94 random_seed( getpid() ); 95 95 96 96 for ( unsigned int i = 0; i < NoOfPairs; i += 1 ) { -
src/tests/concurrent/examples/matrixSum.c
r16988e8 ra85e44c 11 11 // Created On : Mon Oct 9 08:29:28 2017 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Tue Dec 5 22:56:46201714 // Update Count : 413 // Last Modified On : Sun Oct 29 21:08:48 2017 14 // Update Count : 2 15 15 // 16 16 … … 29 29 } 30 30 31 void main( Adder & adder ) with( adder ){32 * subtotal = 0;33 for ( int c = 0; c < cols; c += 1 ) {34 * subtotal +=row[c];31 void main( Adder & adder ) { 32 *adder.subtotal = 0; 33 for ( int c = 0; c < adder.cols; c += 1 ) { 34 *adder.subtotal += adder.row[c]; 35 35 } // for 36 36 } -
src/tests/coroutine/fmtLines.c
r16988e8 ra85e44c 10 10 // Created On : Sun Sep 17 21:56:15 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 5 21:56:35201713 // Update Count : 3 812 // Last Modified On : Sun Oct 1 11:57:19 2017 13 // Update Count : 34 14 14 // 15 15 … … 26 26 } 27 27 28 void ^?{}( Format & fmt ) with( fmt ){29 if ( g != 0 ||b != 0 ) sout | endl;28 void ^?{}( Format & fmt ) { 29 if ( fmt.g != 0 || fmt.b != 0 ) sout | endl; 30 30 } 31 31 32 void main( Format & fmt ) with( fmt ){32 void main( Format & fmt ) { 33 33 for ( ;; ) { // for as many characters 34 for ( g = 0; g < 5; g += 1 ) {// groups of 5 blocks35 for ( b = 0; b < 4; b += 1 ) {// blocks of 4 characters34 for ( fmt.g = 0; fmt.g < 5; fmt.g += 1 ) { // groups of 5 blocks 35 for ( fmt.b = 0; fmt.b < 4; fmt.b += 1 ) { // blocks of 4 characters 36 36 for ( ;; ) { // for newline characters 37 37 suspend(); 38 if ( ch != '\n' ) break;// ignore newline38 if ( fmt.ch != '\n' ) break; // ignore newline 39 39 } // for 40 sout | ch;// print character40 sout | fmt.ch; // print character 41 41 } // for 42 42 sout | " "; // print block separator -
src/tests/coroutine/prodcons.c
r16988e8 ra85e44c 10 10 // Created On : Mon Sep 18 12:23:39 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 5 22:40:55 201713 // Update Count : 4 612 // Last Modified On : Mon Oct 30 23:06:05 2017 13 // Update Count : 42 14 14 // 15 15 … … 24 24 25 25 coroutine Prod { 26 Cons * 26 Cons *c; 27 27 int N, money, receipt; 28 28 }; 29 void main( Prod & prod ) with( prod ) {// starter ::main29 void main( Prod & prod ) { // starter ::main 30 30 // 1st resume starts here 31 for ( int i = 0; i < N; i += 1 ) {31 for ( int i = 0; i < prod.N; i += 1 ) { 32 32 int p1 = random( 100 ); 33 33 int p2 = random( 100 ); 34 34 sout | p1 | " " | p2 | endl; 35 int status = delivery( * c, p1, p2 );36 sout | " $" | money | endl;35 int status = delivery( *prod.c, p1, p2 ); 36 sout | " $" | prod.money | endl; 37 37 sout | status | endl; 38 receipt += 1;38 prod.receipt += 1; 39 39 } 40 stop( * c );40 stop( *prod.c ); 41 41 sout | "prod stops" | endl; 42 42 } … … 64 64 } 65 65 void ^?{}( Cons & cons ) {} 66 void main( Cons & cons ) with( cons ) {// starter prod66 void main( Cons & cons ) { // starter prod 67 67 // 1st resume starts here 68 68 int money = 1, receipt; 69 for ( ; ! done; ) {70 sout | p1 | " " |p2 | endl;69 for ( ; ! cons.done; ) { 70 sout | cons.p1 | " " | cons.p2 | endl; 71 71 sout | " $" | money | endl; 72 status += 1;73 receipt = payment( * p, money );72 cons.status += 1; 73 receipt = payment( *cons.p, money ); 74 74 sout | " #" | receipt | endl; 75 75 money += 1;
Note: See TracChangeset
for help on using the changeset viewer.