Improved performance of the safe prime generator #9

Merged
pdyraga merged 17 commits from master into master 2018-08-02 06:47:13 -04:00
Showing only changes of commit 530e40c1d4 - Show all commits
+3 -3
View File
@@ -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,
) )