---
name: "globus_thread_key"
section: "3"
platform: "linux"
package: "libglobus-common-doc"
version: "18.14-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/globus_thread_key"
---

# globus\_thread\_key(3)

Thread-Specific Storage - Thread-Specific Storage.

## NAME

globus\_thread\_key - Thread-Specific Storage

 \- Thread-Specific Storage.

## SYNOPSIS

### Functions

int **globus\_thread\_key\_create** (**globus\_thread\_key\_t** \*key, **globus\_thread\_key\_destructor\_func\_t** destructor)\
 Create a key for thread-specific storage.  int **globus\_thread\_key\_delete** (**globus\_thread\_key\_t** key)\
 Delete a thread-local storage key.  void \* **globus\_thread\_getspecific** (**globus\_thread\_key\_t** key)\
 Get a thread-specific data value.  int **globus\_thread\_setspecific** (**globus\_thread\_key\_t** key, void \*value)\
 Set a thread-specific data value.

## Detailed Description

Thread-Specific Storage.

The **globus\_thread\_key\_t** data type acts as a key to thread-specific storage. For each key created by **globus\_thread\_key\_create()**, each thread may store and retrieve its own value.

## Function Documentation

### void \* globus\_thread\_getspecific (globus\_thread\_key\_t key)

Get a thread-specific data value. The **globus\_thread\_getspecific()** function returns the value associated with the thread-specific data key passed as its first parameter. This function returns NULL if the value has not been set by the current thread. The return value is undefined if the key is not valid.

**Parameters**

*key* Thread-specific data key to look up.

**Returns**

The value passed to a previous call to **globus\_thread\_setspecific()** in the current thread for this key.

### int globus\_thread\_key\_create (globus\_thread\_key\_t \* key, globus\_thread\_key\_destructor\_func\_t destructor)

Create a key for thread-specific storage. The **globus\_thread\_key\_create()** function creates a new key for thread-specific data. The new key will be available for all threads to store a distinct value. If the function pointer *destructor* is non-NULL, then that function will be invoked when a thread exits that has a non-NULL value associated with the key.

**Parameters**

*key* Pointer to be set to the new key. \
 *destructor* Pointer to a function to call when a thread exits to free the key's value.

**Returns**

On success, globus\_thread\_create\_key() will create a new key to thread-local storage and return GLOBUS\_SUCCESS. If an error occurs, then the value of *key* is undefined and globus\_thread\_create\_key() returns an implementation-specific non-zero error value.

### int globus\_thread\_key\_delete (globus\_thread\_key\_t key)

Delete a thread-local storage key. The **globus\_thread\_key\_delete()** function deletes the key used for a thread-local storage association. The destructor function for this key will no longer be called after this function returns. The behavior of subsequent calls to **globus\_thread\_getspecific()** or **globus\_thread\_setspecific()** with this key will be undefined.

**Parameters**

*key* Key to destroy.

**Returns**

On success, **globus\_thread\_key\_delete()** will delete a thread-local storage key and return GLOBUS\_SUCCESS. If an error occurs, then the value of *key* is undefined and globus\_thread\_create\_key() returns an implementation-specific non-zero error value.

### int globus\_thread\_setspecific (globus\_thread\_key\_t key, void \* value)

Set a thread-specific data value. The **globus\_thread\_setspecific()** function associates a thread-specific value with a data key. If the key had a previous value set in the current thread, it is replaced, but the destructor function is not called for the old value.

**Parameters**

*key* Thread-specific data key to store. \
 *value* A pointer to data to store as the thread-specific data for this thread.

**Returns**

On success, **globus\_thread\_setspecific()** stores value in the thread-specific data for the specified key and returns GLOBUS\_SUCCESS. If an error occurs, **globus\_thread\_setspecific()** returns an implementation-specific non-zero error code and does not modify the key's value for this thread.

## Author

Generated automatically by Doxygen for globus\_common from the source code.
