Changeset 42daeb4 for libcfa/src/concurrency/thread.cfa
- Timestamp:
- Jan 13, 2022, 10:53:25 AM (4 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, master, pthread-emulation, qualifiedEnum
- Children:
- 3eaa689
- Parents:
- 3bb12921 (diff), 00f5fde (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/thread.cfa
r3bb12921 r42daeb4 10 10 // Created On : Tue Jan 17 12:27:26 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 4 09:17:49 201913 // Update Count : 912 // Last Modified On : Wed Jan 12 18:46:48 2022 13 // Update Count : 36 14 14 // 15 15 … … 27 27 uint64_t thread_rand(); 28 28 29 extern uint32_t __global_random_seed; 30 29 31 //----------------------------------------------------------------------------- 30 32 // Thread ctors and dtors 31 void ?{}( thread$ & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) {33 void ?{}( thread$ & this, const char * const name, cluster & cl, void * storage, size_t storageSize ) with( this ) { 32 34 context{ 0p, 0p }; 33 35 self_cor{ name, storage, storageSize }; … … 45 47 preferred = ready_queue_new_preferred(); 46 48 last_proc = 0p; 49 random_state = __global_random_seed; 47 50 #if defined( __CFA_WITH_VERIFY__ ) 48 51 canary = 0x0D15EA5E0D15EA5Ep; … … 177 180 return ret; 178 181 } 182 183 #define GENERATOR LCG 184 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 } // MarsagliaXor 192 193 static inline uint32_t LCG( uint32_t & state ) { // linear congruential generator 194 uint32_t ret = state; 195 state = 36969 * (state & 65535) + (state >> 16); // 36969 is NOT prime! No not change it! 196 return ret; 197 } // LCG 198 199 void set_seed( uint32_t seed ) { 200 active_thread()->random_state = __global_random_seed = seed; 201 GENERATOR( active_thread()->random_state ); 202 } // set_seed 203 uint32_t prng( void ) { return GENERATOR( active_thread()->random_state ); } // [0,UINT_MAX] 179 204 180 205 // Local Variables: //
Note:
See TracChangeset
for help on using the changeset viewer.