This commit is contained in:
2026-04-02 15:16:34 +08:00
commit 4facf82956
58 changed files with 6630 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
package util
import "sync"
type Semaphore struct {
ch chan struct{}
wg sync.WaitGroup
}
func NewSemaphore(concurrency int) *Semaphore {
return &Semaphore{
ch: make(chan struct{}, concurrency),
}
}
func (s *Semaphore) Acquire() {
s.ch <- struct{}{}
s.wg.Add(1)
}
func (s *Semaphore) Release() {
<-s.ch
s.wg.Done()
}
func (s *Semaphore) Wait() {
s.wg.Wait()
}