Loading...
Searching...
No Matches
juce::ThreadLocalValue< Type > Class Template Reference

## Detailed Description

template<typename Type>
class juce::ThreadLocalValue< Type >

Provides cross-platform support for thread-local objects.

This class holds an internal list of objects of the templated type, keeping an instance for each thread that requests one. The first time a thread attempts to access its value, an object is created and added to the list for that thread.

Typically, you'll probably want to create a static instance of a ThreadLocalValue object, or hold one within a singleton.

The templated class for your value must be a primitive type, or a simple POD struct.

When a thread no longer needs to use its value, it can call releaseCurrentThreadStorage() to allow the storage to be re-used by another thread. If a thread exits without calling this method, the object storage will be left allocated until the ThreadLocalValue object is deleted.

The documentation for this class was generated from the following file:

- juce_core/threads/juce_ThreadLocalValue.h

## Public Member Functions

| ThreadLocalValue ()=default
| ~ThreadLocalValue ()
| Destructor.
Type & | operator* () const noexcept
| Returns a reference to this thread's instance of the value.
| operator Type * () const noexcept
| Returns a pointer to this thread's instance of the value.
Type * | operator-> () const noexcept
| Accesses a method or field of the value object.
ThreadLocalValue & | operator= (const Type &newValue)
| Assigns a new value to the thread-local object.
Type & | get () const noexcept
| Returns a reference to this thread's instance of the value.
void | releaseCurrentThreadStorage ()
| Called by a thread before it terminates, to allow this class to release any storage associated with the thread.

## Constructors and Destructors

## ThreadLocalValue()

template<typename Type>

juce::ThreadLocalValue< Type >::ThreadLocalValue | ( |  | ) |

default

Referenced by operator=().

## ~ThreadLocalValue()

template<typename Type>

juce::ThreadLocalValue< Type >::~ThreadLocalValue | ( |  | ) |

inline

Destructor.

When this object is deleted, all the value objects for all threads will be deleted.

## Member Functions

## operator*()

template<typename Type>

Type & juce::ThreadLocalValue< Type >::operator* | ( |  | ) | const

inline noexcept

Returns a reference to this thread's instance of the value.

Note that the first time a thread tries to access the value, an instance of the value object will be created - so if your value's class has a non-trivial constructor, be aware that this method could invoke it.

References get().

## operator Type *()

template<typename Type>

juce::ThreadLocalValue< Type >::operator Type * | ( |  | ) | const

inline noexcept

Returns a pointer to this thread's instance of the value.

Note that the first time a thread tries to access the value, an instance of the value object will be created - so if your value's class has a non-trivial constructor, be aware that this method could invoke it.

References get().

## operator->()

template<typename Type>

Type * juce::ThreadLocalValue< Type >::operator-> | ( |  | ) | const

inline noexcept

Accesses a method or field of the value object.

Note that the first time a thread tries to access the value, an instance of the value object will be created - so if your value's class has a non-trivial constructor, be aware that this method could invoke it.

References get().

## operator=()

template<typename Type>

ThreadLocalValue & juce::ThreadLocalValue< Type >::operator= | ( | const Type & | newValue | ) |

inline

Assigns a new value to the thread-local object.

References get(), and ThreadLocalValue().

## get()

template<typename Type>

Type & juce::ThreadLocalValue< Type >::get | ( |  | ) | const

inline noexcept

Returns a reference to this thread's instance of the value.

Note that the first time a thread tries to access the value, an instance of the value object will be created - so if your value's class has a non-trivial constructor, be aware that this method could invoke it.

References juce::Atomic< Type >::compareAndSetBool(), juce::Atomic< Type >::get(), and juce::Thread::getCurrentThreadId().

Referenced by operator Type *(), operator*(), operator->(), and operator=().

## releaseCurrentThreadStorage()

template<typename Type>

void juce::ThreadLocalValue< Type >::releaseCurrentThreadStorage | ( |  | ) |

inline

Called by a thread before it terminates, to allow this class to release any storage associated with the thread.

References juce::Thread::getCurrentThreadId().

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited