Skip to content

matthewmueller/go-deferred

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Deferred

A thread-safe Deferred implementation for those times when you need to call wg.Done() multiple times in a sync.WaitGroup and not have it panic.

Documentation

The full documentation is available on Godoc.

Example

ctx, cancel := context.WithCancel(context.Background())
d := deferred.New(ctx)
wg.Add(1)

go func() {
  v, err := d.Wait()
  if err != nil {
    t.Fatal(err)
  }
  assert.Equal(t, "a", v)
  wg.Done()
}()

d.Resolve("a")
d.Reject(errors.New("oh no")) // no-op
d.Resolve("hi") // no-op
v, err := d.Wait()
assert.Equal(t, "a", v) // always "a"
assert.Nil(t, err) // always nil
wg.Wait()

License

MIT

About

A thread-safe Deferred implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages