Commit c4692da9 authored by Sameer Ajmani's avatar Sameer Ajmani

context: document how to release resources associated with Contexts.

Some users don't realize that creating a Context with a CancelFunc
attaches a subtree to the parent, and that that subtree is not released
until the CancelFunc is called or the parent is canceled.  Make this
clear early in the package docs, so that people learning about this
package have the right conceptual model.

Change-Id: I7c77a546c19c3751dd1f3a5bc827ad106dd1afbf
Reviewed-on: https://go-review.googlesource.com/24090Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent 68697a3e
...@@ -7,9 +7,17 @@ ...@@ -7,9 +7,17 @@
// and between processes. // and between processes.
// //
// Incoming requests to a server should create a Context, and outgoing calls to // Incoming requests to a server should create a Context, and outgoing calls to
// servers should accept a Context. The chain of function calls between must // servers should accept a Context. The chain of function calls between them
// propagate the Context, optionally replacing it with a modified copy created // must propagate the Context, optionally replacing it with a derived Context
// using WithDeadline, WithTimeout, WithCancel, or WithValue. // created using WithCancel, WithDeadline, WithTimeout, or WithValue. These
// Context values form a tree: when a Context is canceled, all Contexts derived
// from it are also canceled.
//
// The WithCancel, WithDeadline, and WithTimeout functions return a derived
// Context and a CancelFunc. Calling the CancelFunc cancels the new Context and
// any Contexts derived from it, removes the Context from the parent's tree, and
// stops any associated timers. Failing to call the CancelFunc leaks the
// associated resources until the parent Context is canceled or the timer fires.
// //
// Programs that use Contexts should follow these rules to keep interfaces // Programs that use Contexts should follow these rules to keep interfaces
// consistent across packages and enable static analysis tools to check context // consistent across packages and enable static analysis tools to check context
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment