singleflight

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 27, 2019 License: Apache-2.0 Imports: 1 Imported by: 0

README

import (
    "sync"
    "sync/atomic"
    "time"

    "github.com/joshqu1985/fireman/pkg/singleflight"
)

// 使用示例
var g singleflight.Group

// 在一个时间段内只被调用一次
fn := func() (interface{}, error) {
    return db.find().where(), nil
}

v, err := g.Do("key", fn)
if err != nil {
    fmt.Println("Do error: %v", err)
}

https://github.com/golang/groupcache/tree/master/singleflight

Documentation

Overview

Package singleflight provides a duplicate function call suppression mechanism.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Group

type Group struct {
	// contains filtered or unexported fields
}

Group represents a class of work and forms a namespace in which units of work can be executed with duplicate suppression.

func (*Group) Do

func (g *Group) Do(key string, fn func() (interface{}, error)) (interface{}, error)

Do executes and returns the results of the given function, making sure that only one execution is in-flight for a given key at a time. If a duplicate comes in, the duplicate caller waits for the original to complete and receives the same results.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL