We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 941bf46 commit 3631b83Copy full SHA for 3631b83
slice/skip/skip.go
@@ -59,6 +59,7 @@ package skip
59
60
import (
61
"math/rand"
62
+ "sync"
63
"time"
64
)
65
@@ -76,8 +77,13 @@ const p = .5 // the p level defines the probability that a node
76
77
// randomly seeded generator.
78
var generator = rand.New(rand.NewSource(time.Now().UnixNano()))
79
80
+// rnLock protects the RNG as the generator is not threadsafe.
81
+var rnLock sync.Mutex
82
+
83
func generateLevel(maxLevel uint8) uint8 {
84
var level uint8
85
+ rnLock.Lock()
86
+ defer rnLock.Unlock()
87
for level = uint8(1); level < maxLevel-1; level++ {
88
if generator.Float64() >= p {
89
return level
0 commit comments