- File:
-
- 1 edited
-
libcfa/src/concurrency/thread.cfa (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/thread.cfa
rcd5b58f r25ef81d 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at Feb 12 15:24:18202213 // Update Count : 6612 // Last Modified On : Sun Dec 11 20:56:54 2022 13 // Update Count : 102 14 14 // 15 15 … … 26 26 #include "invoke.h" 27 27 28 extern uint32_t __global_random_seed, __global_random_prime, __global_random_mask; 28 extern size_t __global_random_seed; 29 extern size_t __global_random_prime; 30 extern bool __global_random_mask; 29 31 30 32 #pragma GCC visibility push(default) … … 46 48 rdy_link.next = 0p; 47 49 rdy_link.ts = MAX; 50 user_link.next = 0p; 51 user_link.prev = 0p; 52 cltr_link.next = 0p; 53 cltr_link.prev = 0p; 48 54 preferred = ready_queue_new_preferred(); 49 55 last_proc = 0p; 50 random_state = __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl();56 PRNG_SET_SEED( random_state, __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl() ); 51 57 #if defined( __CFA_WITH_VERIFY__ ) 52 58 executing = 0p; … … 176 182 //----------------------------------------------------------------------------- 177 183 bool migrate( thread$ * thrd, struct cluster & cl ) { 178 179 184 monitor$ * tmon = get_monitor(thrd); 180 185 monitor$ * __monitors[] = { tmon }; 181 186 monitor_guard_t __guard = { __monitors, 1 }; 182 183 184 187 { 185 188 // if nothing needs to be done, return false … … 221 224 222 225 //----------------------------------------------------------------------------- 223 #define GENERATOR LCG 224 225 void set_seed( uint32_t seed ) { 226 uint32_t & state = active_thread()->random_state; 227 state = __global_random_seed = seed; 228 GENERATOR( state ); 229 __global_random_prime = state; 226 227 void set_seed( size_t seed ) { 228 PRNG_STATE_T & state = active_thread()->random_state; 229 PRNG_SET_SEED( state, seed ); 230 __global_random_seed = seed; 231 __global_random_prime = seed; 230 232 __global_random_mask = true; 231 233 } // set_seed 232 234 233 uint32_t prng( void ) { // [0,UINT_MAX] 234 uint32_t & state = active_thread()->random_state; 235 return GENERATOR( state ); 235 size_t prng( void ) { // [0,UINT_MAX] 236 return PRNG_NAME( active_thread()->random_state ); 236 237 } // prng 237 238
Note:
See TracChangeset
for help on using the changeset viewer.