- Timestamp:
- Oct 23, 2023, 11:58:10 AM (2 years ago)
- Branches:
- master, stuck-waitfor-destruct
- Children:
- edc4813
- Parents:
- 2ad5e1d5 (diff), abb04a4 (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
- Files:
-
- 2 edited
-
concurrency/waituntil/channel_close.cfa (modified) (2 diffs)
-
genericUnion.cfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tests/concurrency/waituntil/channel_close.cfa
r2ad5e1d5 r7b84d3e 26 26 for( ;; ) { 27 27 if ( useAnd ) { 28 waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }29 and waituntil( (in2 << B) ) { assert( B_removes == in2 ); B_removes++; removes++; }28 waituntil( (in << A) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); assert( A_removes == in ); A_removes++; removes++; } 29 and waituntil( (in2 << B) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); assert( B_removes == in2 ); B_removes++; removes++; } 30 30 continue; 31 31 } 32 waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }33 or waituntil( (in << B) ) { assert( B_removes == in ); B_removes++; removes++; }32 waituntil( (in << A) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); assert( A_removes == in ); A_removes++; removes++; } 33 or waituntil( (in << B) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); ( B_removes == in ); B_removes++; removes++; } 34 34 } 35 35 } catchResume ( channel_closed * e ) {} // continue to remove until would block … … 37 37 try { 38 38 for( ;; ) 39 waituntil( (in << A) ) { assert( A_removes == in ); A_removes++; removes++; }39 waituntil( (in << A) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); assert( A_removes == in ); A_removes++; removes++; } 40 40 } catchResume ( channel_closed * e ) {} // continue to remove until would block 41 41 catch ( channel_closed * e ) {} 42 42 try { 43 43 for( ;; ) 44 waituntil( (in << B) ) { assert( B_removes == in ); B_removes++; removes++; }44 waituntil( (in << B) ) { __atomic_thread_fence( __ATOMIC_SEQ_CST ); assert( B_removes == in ); B_removes++; removes++; } 45 45 } catchResume ( channel_closed * e ) {} // continue to remove until would block 46 46 catch ( channel_closed * e ) {} -
tests/genericUnion.cfa
r2ad5e1d5 r7b84d3e 10 10 // Created On : Tue Dec 25 14:42:46 2018 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Dec 25 14:46:33 201813 // Update Count : 212 // Last Modified On : Fri Oct 20 09:13:26 2023 13 // Update Count : 15 14 14 // 15 15 16 #include <fstream.hfa> 16 17 #include <limits.hfa> 17 18 18 forall( T)19 forall( T ) 19 20 union ByteView { 20 21 T val; … … 23 24 24 25 forall(T) 25 void print( ByteView(T) x) {26 for ( int i = 0; i < sizeof(int); i++) {// want to change to sizeof(T)27 printf("%02x", x.bytes[i] & 0xff);26 void print( ByteView(T) x ) { 27 for ( i; sizeof(int) ) { // want to change to sizeof(T) 28 sout | nobase( pad0( wd( 2, hex( x.bytes[i] & 0xff ) ) ) ) | nosep; 28 29 } 29 30 } 30 31 31 32 forall(T) 32 void f( ByteView(T) x, T val) {33 print( x);34 printf(" ");33 void f( ByteView(T) x, T val ) { 34 print( x ); 35 sout | " "; 35 36 x.val = val; 36 print( x);37 printf("\n");37 print( x ); 38 sout | nl; 38 39 } 39 40 40 41 int main() { 42 sout | nlOff; 41 43 ByteView(unsigned) u = { 0 }; 42 44 ByteView(int) i = { 0 }; 43 f( u, MAX);44 f( i, -1);45 f( u, MAX ); 46 f( i, -1 ); 45 47 } 46 48
Note:
See TracChangeset
for help on using the changeset viewer.