Improved performance of the safe prime generator #9
@@ -68,19 +68,19 @@ func GenerateSafePrime(
|
|||||||
return nil, nil, errors.New("safe prime size must be at least 6 bits")
|
return nil, nil, errors.New("safe prime size must be at least 6 bits")
|
||||||
}
|
}
|
||||||
|
|
||||||
primeChan := make(chan safePrime, 1)
|
primeChan := make(chan safePrime, concurrencyLevel)
|
||||||
errChan := make(chan error, 1)
|
errChan := make(chan error, concurrencyLevel)
|
||||||
|
|
||||||
defer close(primeChan)
|
defer close(primeChan)
|
||||||
defer close(errChan)
|
defer close(errChan)
|
||||||
|
|
||||||
mutex := &sync.Mutex{}
|
mutex := &sync.Mutex{}
|
||||||
waitGroup := &sync.WaitGroup{}
|
waitGroup := &sync.WaitGroup{}
|
||||||
waitGroup.Add(concurrencyLevel)
|
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
for i := 0; i < concurrencyLevel; i++ {
|
for i := 0; i < concurrencyLevel; i++ {
|
||||||
|
waitGroup.Add(1)
|
||||||
runGenPrimeRoutine(
|
runGenPrimeRoutine(
|
||||||
ctx, primeChan, errChan, mutex, waitGroup, random, bitLen,
|
ctx, primeChan, errChan, mutex, waitGroup, random, bitLen,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user