# gsema **Repository Path**: gomods/gsema ## Basic Information - **Project Name**: gsema - **Description**: 信号控制 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-30 - **Last Updated**: 2023-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gsema a simple goroutine limit pool. ## Installation ``` $ go get gitee.com/gomods/gsema ``` ## Usage ``` package main import ( "fmt" "time" "gitee.com/gomods/gsema" ) var sema = gsema.NewSemaphore(3) func main() { userCount := 10 for i := 0; i < userCount; i++ { go Read(i) } sema.Wait() } func Read(i int) { defer sema.Done() sema.Add(1) fmt.Printf("go func: %d, time: %d\n", i, time.Now().Unix()) time.Sleep(time.Second) } ``` ## Output ``` ... go func: 0, time: 1547880322 go func: 2, time: 1547880322 go func: 1, time: 1547880322 go func: 3, time: 1547880323 go func: 4, time: 1547880323 go func: 5, time: 1547880323 go func: 7, time: 1547880324 go func: 8, time: 1547880324 go func: 6, time: 1547880324 go func: 9, time: 1547880325 ```