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