Skip to content

GLib.Private

record (struct)

The Private struct is an opaque data structure to represent a thread-local data key. It is approximately equivalent to the pthread_setspecific()/pthread_getspecific() APIs on POSIX and to TlsSetValue()/TlsGetValue() on Windows.

If you don't already know why you might want this functionality, then you probably don't need it.

Private is a very limited resource (as far as 128 per program, shared between all libraries). It is also not possible to destroy a Private after it has been used. As such, it is only ever acceptable to use Private in static scope, and even then sparingly so.

See G_PRIVATE_INIT() for a couple of examples.

The Private structure should be considered opaque. It should only be accessed via the g_private_ functions.

Methods

get

def get(self) -> int | None

Returns the current value of the thread local variable key.

If the value has not yet been set in this thread, None is returned. Values are never copied between threads (when a new thread is created, for example).

replace

def replace(self, value: int | None = ...) -> None

Sets the thread local variable key to have the value value in the current thread.

This function differs from Private.set in the following way: if the previous value was non-None then the GDestroyNotify handler for key is run on it.

Parameters:

  • value — the new value

set

def set(self, value: int | None = ...) -> None

Sets the thread local variable key to have the value value in the current thread.

This function differs from Private.replace in the following way: the GDestroyNotify for key is not called on the old value.

Parameters:

  • value — the new value

Properties

p

p: int  # read/write

notify

notify: DestroyNotify  # read/write

future

future: list[int]  # read/write