Changeset e1358c0
- Timestamp:
- Mar 19, 2025, 1:34:12 PM (3 days ago)
- Branches:
- master
- Children:
- fd3be42
- Parents:
- 048dde4
- git-author:
- kyoung <lseo@…> (03/19/25 12:01:52)
- git-committer:
- kyoung <lseo@…> (03/19/25 13:34:12)
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified libcfa/src/concurrency/select.cfa ¶
r048dde4 re1358c0 10 10 // Author : Colby Alexander Parsons 11 11 // Created On : Thu Apr 21 19:46:50 2023 12 // Last Modified By : 13 // Last Modified On : 14 // Update Count : 12 // Last Modified By : Kyoung Seo 13 // Last Modified On : Wed Mar 19 12:00:00 2025 14 // Update Count : 1 15 15 // 16 16 … … 51 51 bool on_selected( select_timeout_node & this, select_node & node ) { return true; } 52 52 53 // Gateway routine to wait on duration54 select_timeout_node timeout( Duration duration ) {55 select_timeout_node node{ duration, timeout_handler_select_cast };56 return node;57 }58 select_timeout_node sleep( Duration duration ) { return timeout( duration ); }59 -
TabularUnified libcfa/src/concurrency/select.hfa ¶
r048dde4 re1358c0 10 10 // Author : Colby Alexander Parsons 11 11 // Created On : Thu Jan 21 19:46:50 2023 12 // Last Modified By : 13 // Last Modified On : 14 // Update Count : 12 // Last Modified By : Kyoung Seo 13 // Last Modified On : Wed Mar 19 12:00:00 2025 14 // Update Count : 1 15 15 // 16 16 … … 214 214 select_timeout_node __CFA_select_get_type( select_timeout_node this ); 215 215 216 // Gateway routines to waituntil on duration 217 select_timeout_node timeout( Duration duration ); 218 select_timeout_node sleep( Duration duration ); 219 216 // Timer macro for waituntil 217 #define _timeout(D) (select_timeout_node) { D, timeout_handler_select_cast } -
TabularUnified tests/concurrency/waituntil/all_types.cfa ¶
r048dde4 re1358c0 39 39 or when( i % 4 < 2 ) waituntil( B ) { consume_b_val( myTotal ); } 40 40 or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; } 41 or when( i % 3 ) waituntil( timeout( 1`ms ) ) {}41 or when( i % 3 ) waituntil( _timeout( 1`ms ) ) {} 42 42 or when( i % 8 < 4 ) else {} 43 43 } … … 53 53 or waituntil( c << C ) { if ( c == -1 ) break; myTotal += c; } 54 54 or waituntil( B ) { consume_b_val( myTotal ); } 55 or waituntil( timeout( 100`ns ) ) { }55 or waituntil( _timeout( 100`ns ) ) { } 56 56 } 57 57 __atomic_fetch_add( &globalTotal, myTotal, __ATOMIC_SEQ_CST ); … … 99 99 or when( j % 4 < 2 ) waituntil( B ) { produce_b_val( total ); } 100 100 and when( j % 8 < 4 ) waituntil( C << j ) { total += j; } 101 and waituntil( timeout( 1`ns ) ) {}101 and waituntil( _timeout( 1`ns ) ) {} 102 102 if ( j == numtimes / 2 ) 103 103 fulfil( F, val_to_deliver ); -
TabularUnified tests/concurrency/waituntil/timeout.cfa ¶
r048dde4 re1358c0 6 6 7 7 int main() { 8 waituntil( sleep( 1`ms ) ) { printf("timeout\n"); }9 waituntil( timeout( 1`s ) ) { printf("timeout\n"); } or waituntil(timeout( 2`s ) ) { printf("timeout\n"); }10 waituntil( timeout( 100`s ) ) { printf("timeout 1\n"); } or else { printf("else\n"); }11 waituntil( timeout( 1`ns ) ) { printf("timeout\n"); } and waituntil(timeout( 2`s ) ) { printf("timeout\n"); }8 waituntil( _timeout( 1`ms ) ) { printf("timeout\n"); } 9 waituntil( _timeout( 1`s ) ) { printf("timeout\n"); } or waituntil( _timeout( 2`s ) ) { printf("timeout\n"); } 10 waituntil( _timeout( 100`s ) ) { printf("timeout 1\n"); } or else { printf("else\n"); } 11 waituntil( _timeout( 1`ns ) ) { printf("timeout\n"); } and waituntil( _timeout( 2`s ) ) { printf("timeout\n"); } 12 12 int count = 0; 13 13 for ( i; 1000 ) 14 waituntil( timeout( 1`ns ) ) { count++; } or else { count++; }14 waituntil( _timeout( 1`ns ) ) { count++; } or else { count++; } 15 15 16 16 assert( count == 1000 ); 17 sleep( 1`ms );17 _timeout( 1`ms ); 18 18 printf("done\n"); 19 19 }
Note: See TracChangeset
for help on using the changeset viewer.