mirror of
				https://github.com/minio/minio.git
				synced 2025-11-04 02:01:05 +01:00 
			
		
		
		
	also simplify readerLocks to be just like writeLocks, DRWMutex() is never shared and there are order guarantees that need for such a thing to work for RLock's
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) 2015-2021 MinIO, Inc.
 | 
						|
//
 | 
						|
// This file is part of MinIO Object Storage stack
 | 
						|
//
 | 
						|
// This program is free software: you can redistribute it and/or modify
 | 
						|
// it under the terms of the GNU Affero General Public License as published by
 | 
						|
// the Free Software Foundation, either version 3 of the License, or
 | 
						|
// (at your option) any later version.
 | 
						|
//
 | 
						|
// This program is distributed in the hope that it will be useful
 | 
						|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
// GNU Affero General Public License for more details.
 | 
						|
//
 | 
						|
// You should have received a copy of the GNU Affero General Public License
 | 
						|
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
 | 
						|
package dsync
 | 
						|
 | 
						|
import (
 | 
						|
	"math/rand"
 | 
						|
	"sync"
 | 
						|
)
 | 
						|
 | 
						|
// lockedRandSource provides protected rand source, implements rand.Source interface.
 | 
						|
type lockedRandSource struct {
 | 
						|
	lk  sync.Mutex
 | 
						|
	src rand.Source
 | 
						|
}
 | 
						|
 | 
						|
// Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
 | 
						|
func (r *lockedRandSource) Int63() (n int64) {
 | 
						|
	r.lk.Lock()
 | 
						|
	n = r.src.Int63()
 | 
						|
	r.lk.Unlock()
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
// Seed uses the provided seed value to initialize the generator to a
 | 
						|
// deterministic state.
 | 
						|
func (r *lockedRandSource) Seed(seed int64) {
 | 
						|
	r.lk.Lock()
 | 
						|
	r.src.Seed(seed)
 | 
						|
	r.lk.Unlock()
 | 
						|
}
 |