Windows PowerShell command on Get-command Tcl_Release
MyWebUniversity

Manual Pages for UNIX Operating System command usage for man Tcl_Release

Tcl Library Procedures Tcl_Preserve(3TCL)

_________________________________________________________________

NAME

Tcl_Preserve, Tcl_Release, Tcl_EventuallyFree - avoid free-

ing storage while it's being used

SYNOPSIS

#include

Tcl_Preserve(clientData)

Tcl_Release(clientData)

Tcl_EventuallyFree(clientData, freeProc)

ARGUMENTS ClientData clientData (in) Token describing structure to be freed

or reallocated. Usu-

ally a pointer to memory for structure.

Tcl_FreeProc *freeProc (in) Procedure to invoke to

free clientData.

_________________________________________________________________

DESCRIPTION

These three procedures help implement a simple reference count mechanism for managing storage. They are designed to solve a problem having to do with widget deletion, but are also useful in many other situations. When a widget is

deleted, its widget record (the structure holding informa-

tion specific to the widget) must be returned to the storage allocator. However, it's possible that the widget record is in active use by one of the procedures on the stack at the time of the deletion. This can happen, for example, if the command associated with a button widget causes the button to

be destroyed: an X event causes an event-handling C pro-

cedure in the button to be invoked, which in turn causes the button's associated Tcl command to be executed, which in turn causes the button to be deleted, which in turn causes

the button's widget record to be de-allocated. Unfor-

tunately, when the Tcl command returns, the button's event-

handling procedure will need to reference the button's widget record. Because of this, the widget record must not be freed as part of the deletion, but must be retained until

the event-handling procedure has finished with it. In other

situations where the widget is deleted, it may be possible to free the widget record immediately. Tcl Last change: 7.5 1

Tcl Library Procedures Tcl_Preserve(3TCL)

Tcl_Preserve and Tcl_Release implement short-term reference

counts for their clientData argument. The clientData argu-

ment identifies an object and usually consists of the address of a structure. The reference counts guarantee that

an object will not be freed until each call to Tcl_Preserve

for the object has been matched by calls to Tcl_Release.

There may be any number of unmatched Tcl_Preserve calls in

effect at once.

Tcl_EventuallyFree is invoked to free up its clientData

argument. It checks to see if there are unmatched

Tcl_Preserve calls for the object. If not, then

Tcl_EventuallyFree calls freeProc immediately. Otherwise

Tcl_EventuallyFree records the fact that clientData needs

eventually to be freed. When all calls to Tcl_Preserve have

been matched with calls to Tcl_Release then freeProc will be

called by Tcl_Release to do the cleanup.

All the work of freeing the object is carried out by freeProc. FreeProc must have arguments and result that

match the type Tcl_FreeProc:

typedef void Tcl_FreeProc(char *blockPtr);

The blockPtr argument to freeProc will be the same as the

clientData argument to Tcl_EventuallyFree. The type of

blockPtr (char *) is different than the type of the client-

Data argument to Tcl_EventuallyFree for historical reasons,

but the value is the same.

When the clientData argument to Tcl_EventuallyFree refers to

storage allocated and returned by a prior call to Tcl_Alloc,

ckalloc, or another function of the Tcl library, then the freeProc argument should be given the special value of

TCL_DYNAMIC.

This mechanism can be used to solve the problem described

above by placing Tcl_Preserve and Tcl_Release calls around

actions that may cause undesired storage re-allocation. The

mechanism is intended only for short-term use (i.e. while

procedures are pending on the stack); it will not work

efficiently as a mechanism for long-term reference counts.

The implementation does not depend in any way on the inter-

nal structure of the objects being freed; it keeps the reference counts in a separate structure.

SEE ALSO

Tcl_Interp, Tcl_Alloc

KEYWORDS free, reference count, storage Tcl Last change: 7.5 2

Tcl Library Procedures Tcl_Preserve(3TCL)

ATTRIBUTES

See attributes(5) for descriptions of the following attri-

butes:

_______________________________________

| ATTRIBUTE TYPE | ATTRIBUTE VALUE|

|____________________|__________________|_

| Availability | runtime/tcl-8 |

|____________________|__________________|_

| Interface Stability| Uncommitted |

|____________________|_________________|

NOTES Source for Tcl is available on http://opensolaris.org. Tcl Last change: 7.5 3




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™