Categorygithub.com/whywaita/xsemaphore
repositorypackage
0.0.1
Repository: https://github.com/whywaita/xsemaphore.git
Documentation: pkg.go.dev

# README

xsemaphore

xsemaphore provide semaphore.Weighted by keys.

Usage

package main

import (
	"context"
	"fmt"

	"github.com/whywaita/xsemaphore"
)

func main() {
	ctx := context.Background()
	keys := []string{"key1", "key2"}

	for _, key := range keys {
		func() {
			sem := xsemaphore.Get(key, 1)
			if err := sem.Acquire(ctx, 1); err != nil {
				fmt.Println(err)
				return
			}
			defer sem.Release(1)

			// do something
		}()
	}
}