initial commit

This commit is contained in:
2024-08-01 23:42:30 +03:00
commit 09fef3c113
21 changed files with 931 additions and 0 deletions

36
semaphore_test.go Normal file
View File

@@ -0,0 +1,36 @@
package commander
import (
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestNewSemaphore(t *testing.T) {
t.Parallel()
sem := NewSemaphore(2)
var locked atomic.Uint32
for i := 0; i < 3; i++ {
go func() {
sem.Acquire()
locked.Add(1)
}()
}
time.Sleep(time.Microsecond * 10)
require.Equal(t, uint32(2), locked.Load())
sem.Release()
time.Sleep(time.Microsecond)
require.Equal(t, uint32(3), locked.Load())
sem.Release()
sem.Release()
}