memo

package
v0.0.0-...-8cd4330 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2018 License: MIT Imports: 1 Imported by: 0

README

Exercise 9.3 (P279)

Extend the Func type and the (*Memo).Get method so that callers may provide an optional done channel through which they can cancel the operation (§8.9). The results of a cancelled Func call should not be cached.

Documentation

Overview

Package memo provides a concurrency-safe non-blocking memoization of a function. Requests for different keys proceed in parallel. Concurrent requests for the same key block until the first completes. This implementation uses a monitor goroutine.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Func

type Func func(key string) (interface{}, error)

Func is the type of the function to memoize.

type Memo

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

func New

func New(f Func) *Memo

New returns a memoization of f. Clients must subsequently call Close.

func (*Memo) Close

func (memo *Memo) Close()

func (*Memo) Get

func (memo *Memo) Get(key string, done <-chan bool) (interface{}, error)

Jump to

Keyboard shortcuts

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