mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 13:19:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			538 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			538 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package sdkrand
 | |
| 
 | |
| import (
 | |
| 	"math/rand"
 | |
| 	"sync"
 | |
| 	"time"
 | |
| )
 | |
| 
 | |
| // lockedSource is a thread-safe implementation of rand.Source
 | |
| type lockedSource struct {
 | |
| 	lk  sync.Mutex
 | |
| 	src rand.Source
 | |
| }
 | |
| 
 | |
| func (r *lockedSource) Int63() (n int64) {
 | |
| 	r.lk.Lock()
 | |
| 	n = r.src.Int63()
 | |
| 	r.lk.Unlock()
 | |
| 	return
 | |
| }
 | |
| 
 | |
| func (r *lockedSource) Seed(seed int64) {
 | |
| 	r.lk.Lock()
 | |
| 	r.src.Seed(seed)
 | |
| 	r.lk.Unlock()
 | |
| }
 | |
| 
 | |
| // SeededRand is a new RNG using a thread safe implementation of rand.Source
 | |
| var SeededRand = rand.New(&lockedSource{src: rand.NewSource(time.Now().UnixNano())})
 |