5.6 Custodian Shutdown Registration

► |  | The Racket Foreign Interface

1 | Overview
2 | Loading Foreign Libraries
3 | C Types
4 | Pointer Functions
5 | Derived Utilities
6 | Miscellaneous Support
7 | Unexported Primitive Functions
| Bibliography
| Index

▼ | 5 | Derived Utilities

5.1 | Safe Homogenous Vectors
5.2 | Safe C Vectors
5.3 | Tagged C Pointer Types
5.4 | Defining Bindings
5.5 | Allocation and Finalization
5.6 | Custodian Shutdown Registration
5.7 | Atomic Execution
5.8 | Speculatively Atomic Execution
5.9 | Objective-C FFI
5.10 | Cocoa Foundation
5.11 | COM (Common Object Model)
5.12 | File Security-Guard Checks
5.13 | Windows API Helpers

On this page:

register-custodian-shutdown
unregister-custodian-shutdown

top ← prev up next →

#### 5.6`` Custodian Shutdown Registration

(require ffi/unsafe/custodian)

The ffi/unsafe/custodian library provides utilities for registering shutdown callbacks with custodians.

> > procedure
> > (register-custodian-shutdown |  | v |  |  |  |
> > |  | callback |  |  |  |
> > | [ | custodian |  |  |  |
> > |  | #:at-exit? at-exit? |  |  |  |
> > |  | #:weak? weak?]) |  | → |  | cpointer?
> v : any/c
> callback : (any/c . -> . any)
> custodian : custodian? = (current-custodian)
> at-exit? : any/c = #f
> weak? : any/c = #f

Registers callback to be applied (in atomic mode and an unspecified Racket thread) to v when custodian is shutdown. The result is a pointer that can be supplied to unregister-custodian-shutdown to remove the registration.

If at-exit? is true, then callback is applied when Racket exits, even if the custodian is not explicitly shut down.

If weak? is true, then callback may not be called if v is determined to be unreachable during garbage collection. The value v is always weakly held by the custodian, even if weak? is #f; see scheme_add_managed for more information.

Normally, weak? should be false. To trigger actions based on finalization or custodian shutdown—whichever happens first—leave weak? as #f and have a finalizer cancel the shutdown action via unregister-custodian-shutdown. Otherwise, a not-yet-run finalizer may remain pending after the custodian is shutdown.

> > procedure
> > (unregister-custodian-shutdown |  | v |  |  |  |
> > |  | registration) |  | → |  | void?
> v : any/c
> registration : _cpointer

Cancels a custodian-shutdown registration, where registration is a previous result from register-custodian-shutdown applied to v.
top ← prev up next →