mirror of
https://github.com/golang/go
synced 2024-11-15 11:20:30 -07:00
runtime: add a note on SetFinalizer doc about method receiver
A method receiver can be collected during the execution of that method.
This does make sense when thinking about how the GC would work, but
also seems not very obvious, so a point in the docs can increase the
chance of avoiding issues caused by missing KeepAlive of method
receivers.
Change-Id: I6817237dd022b5729dbdcda1b9f70c7059605575
GitHub-Last-Rev: 878bf3fde7
GitHub-Pull-Request: golang/go#67777
Reviewed-on: https://go-review.googlesource.com/c/go/+/589735
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
This commit is contained in:
parent
cf501e05e1
commit
f7c330eac7
@ -377,9 +377,11 @@ func blockUntilEmptyFinalizerQueue(timeout int64) bool {
|
||||
// In order to use finalizers correctly, the program must ensure that
|
||||
// the object is reachable until it is no longer required.
|
||||
// Objects stored in global variables, or that can be found by tracing
|
||||
// pointers from a global variable, are reachable. For other objects,
|
||||
// pass the object to a call of the [KeepAlive] function to mark the
|
||||
// last point in the function where the object must be reachable.
|
||||
// pointers from a global variable, are reachable. A function argument or
|
||||
// receiver may become unreachable at the last point where the function
|
||||
// mentions it. To make an unreachable object reachable, pass the object
|
||||
// to a call of the [KeepAlive] function to mark the last point in the
|
||||
// function where the object must be reachable.
|
||||
//
|
||||
// For example, if p points to a struct, such as os.File, that contains
|
||||
// a file descriptor d, and p has a finalizer that closes that file
|
||||
|
Loading…
Reference in New Issue
Block a user