- File:
-
- 1 edited
-
libcfa/src/concurrency/thread.cfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/thread.cfa
r1959528 r24e321c 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jan 12 18:28:18 202213 // Update Count : 3512 // Last Modified On : Wed Dec 4 09:17:49 2019 13 // Update Count : 9 14 14 // 15 15 … … 27 27 uint64_t thread_rand(); 28 28 29 extern uint32_t __global_random_seed;30 31 29 //----------------------------------------------------------------------------- 32 30 // Thread ctors and dtors 33 void ?{}( thread$ & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) {31 void ?{}(thread$ & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) { 34 32 context{ 0p, 0p }; 35 33 self_cor{ name, storage, storageSize }; … … 47 45 preferred = ready_queue_new_preferred(); 48 46 last_proc = 0p; 49 random_state = __global_random_seed;50 47 #if defined( __CFA_WITH_VERIFY__ ) 51 48 canary = 0x0D15EA5E0D15EA5Ep; … … 180 177 return ret; 181 178 } 182 183 #define GENERATOR LCG184 185 static inline uint32_t MarsagliaXor( uint32_t & state ) {186 uint32_t ret = state;187 state ^= state << 6;188 state ^= state >> 21;189 state ^= state << 7;190 return ret;191 } // MarsagliaXor192 193 static inline uint32_t LCG( uint32_t & state ) { // linear congruential generator194 uint32_t ret = state;195 state = 36969 * (state & 65535) + (state >> 16); // 36969 is NOT prime! No not change it!196 return ret;197 } // LCG198 199 void set_seed( uint32_t seed ) { active_thread()->random_state = seed; __global_random_seed = seed; }200 uint32_t prng( void ) { return GENERATOR( active_thread()->random_state ); } // [0,UINT_MAX]201 179 202 180 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.