aboutsummaryrefslogblamecommitdiffhomepage
path: root/vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go
blob: 0c9802d877066f10d82a6fdedefffe36ac51c385 (plain) (tree)




























                                                                                    
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())})