sdlSetTls function thread

bool sdlSetTls(
  1. Pointer<SdlAtomicInt> id,
  2. Pointer<NativeType> value,
  3. Pointer<NativeType> deor
)

Set the current thread's value associated with a thread local storage ID.

If the thread local storage ID is not initialized (the value is 0), a new ID will be created in a thread-safe way, so all calls using a pointer to the same ID will refer to the same local storage.

Note that replacing a value from a previous call to this function on the same thread does not call the previous value's destructor!

destructor can be NULL; it is assumed that value does not need to be cleaned up if so.

\param id a pointer to the thread local storage ID, may not be NULL. \param value the value to associate with the ID for the current thread. \param destructor a function called when the thread exits, to free the value, may be NULL. \returns true on success or false on failure; call SDL_GetError() for more information.

\threadsafety It is safe to call this function from any thread.

\since This function is available since SDL 3.2.0.

\sa SDL_GetTLS

extern SDL_DECLSPEC bool SDLCALL SDL_SetTLS(SDL_TLSID *id, const void *value, SDL_TLSDestructorCallback destructor)

Implementation

bool sdlSetTls(
  Pointer<SdlAtomicInt> id,
  Pointer<NativeType> value,
  Pointer<NativeType> deor,
) {
  final sdlSetTlsLookupFunction = _libSdl
      .lookupFunction<
        Uint8 Function(
          Pointer<SdlAtomicInt> id,
          Pointer<NativeType> value,
          Pointer<NativeType> deor,
        ),
        int Function(
          Pointer<SdlAtomicInt> id,
          Pointer<NativeType> value,
          Pointer<NativeType> deor,
        )
      >('SDL_SetTLS');
  return sdlSetTlsLookupFunction(id, value, deor) == 1;
}