12#ifndef ARCCORE_CONCURRENCY_THREADPRIVATE_H
13#define ARCCORE_CONCURRENCY_THREADPRIVATE_H
19#include "arccore/concurrency/GlibAdapter.h"
40class ARCCORE_CONCURRENCY_EXPORT ThreadPrivateStorage
44 ARCCORE_DEPRECATED_REASON(
"Y2022; This class is deprecated. Use 'thread_local' specifier.")
45 ThreadPrivateStorage();
46 ~ThreadPrivateStorage();
60 void setValue(
void* v);
75class ARCCORE_CONCURRENCY_EXPORT ThreadPrivateBase
84 virtual void* createInstance() = 0;
89 ARCCORE_DEPRECATED_REASON(
"Y2022; This class is deprecated. Use 'thread_local' specifier.")
92 , m_create_functor(create_functor)
116 ThreadPrivateStorage* m_key;
118 ICreateFunctor* m_create_functor;
147 ARCCORE_DEPRECATED_REASON(
"Y2022; This class is deprecated. Use 'thread_local' specifier.")
149 : m_storage(key,
this)
155 for (T*
item : m_allocated_items)
164 return (T*)(m_storage.item());
169 void* createInstance()
override
171 T* new_ptr =
new T();
173 m_allocated_items.push_back(new_ptr);
179 std::vector<T*> m_allocated_items;
180 ThreadPrivateBase m_storage;
Definitions and globals of Arccore.
Base class allowing an instance of an object to be stored per thread.
Container for thread-private values.
void initialize()
Initializes the key containing thread-private values. This method can be called multiple times and do...
T * item()
Instance specific to the current thread.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --