Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ConcurrencyGlobal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ConcurrencyGlobal.h (C) 2000-2025 */
9/* */
10/* Définitions globales de la composante 'Concurrency' de 'Arccore'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_CONCURRENCY_CONCURRENCYGLOBAL_H
13#define ARCCORE_CONCURRENCY_CONCURRENCYGLOBAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22#if defined(ARCCORE_COMPONENT_arccore_concurrency)
23#define ARCCORE_CONCURRENCY_EXPORT ARCCORE_EXPORT
24#define ARCCORE_CONCURRENCY_EXTERN_TPL
25#else
26#define ARCCORE_CONCURRENCY_EXPORT ARCCORE_IMPORT
27#define ARCCORE_CONCURRENCY_EXTERN_TPL extern
28#endif
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arcane
34{
36class Mutex;
37class SpinLock;
38class GlobalMutex;
39class IThreadBarrier;
44class ForLoopRunInfo;
47class ITask;
48class TaskContext;
49class TaskFactory;
50class ITaskFunctor;
51template <typename InstanceType> class TaskFunctor;
52template <typename InstanceType> class TaskFunctorWithContext;
53
55class SpinLockImpl;
58
60class ThreadImpl;
62class MutexImpl;
63} // namespace Arcane
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72
73namespace Arcane::Concurrency
74{
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79extern "C++" ARCCORE_CONCURRENCY_EXPORT IThreadImplementation*
80getThreadImplementation();
81extern "C++" ARCCORE_CONCURRENCY_EXPORT IThreadImplementation*
82setThreadImplementation(IThreadImplementation* impl);
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87extern "C++" ARCCORE_CONCURRENCY_EXPORT Ref<IThreadImplementation>
88createGlibThreadImplementation();
89
90extern "C++" ARCCORE_CONCURRENCY_EXPORT Ref<IThreadImplementation>
91createStdThreadImplementation();
92
93extern "C++" ARCCORE_CONCURRENCY_EXPORT Ref<IThreadImplementation>
94createNullThreadImplementation();
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99} // namespace Arcane::Concurrency
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104namespace Arccore
105{
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
110using Arcane::GlibThreadImplementation;
111using Arcane::GlobalMutex;
112using Arcane::IThreadBarrier;
113using Arcane::IThreadImplementation;
114using Arcane::Mutex;
115using Arcane::MutexImpl;
116using Arcane::NullThreadBarrier;
117using Arcane::NullThreadImplementation;
118using Arcane::SpinLock;
119using Arcane::SpinLockImpl;
120using Arcane::ThreadImpl;
121
122/*---------------------------------------------------------------------------*/
123/*---------------------------------------------------------------------------*/
124
125}
126
127/*---------------------------------------------------------------------------*/
128/*---------------------------------------------------------------------------*/
129
130namespace Arccore::Concurrency
131{
132using Arcane::Concurrency::getThreadImplementation;
133using Arcane::Concurrency::setThreadImplementation;
134using Arcane::Concurrency::createGlibThreadImplementation;
135using Arcane::Concurrency::createStdThreadImplementation;
136using Arcane::Concurrency::createNullThreadImplementation;
137}
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
141
142#endif
#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour déclarer qu'une classe utilise un compteur de référence.
Informations d'exécution d'une boucle.
Implémentation de ITreadImplementation avec la 'Glib'.
Interface d'un fonctor pour une tâche.
Definition Task.h:72
Implémentation d'une fabrique de tâches.
Interface d'une tâche concourante.
Definition Task.h:187
Interface d'un service implémentant le support des threads.
Implémentation d'une barrière en mono-thread.
Implémentation des threads en mode mono-thread.
Caractéristiques d'un boucle 1D multi-thread.
Definition ParallelFor.h:34
Options d'exécution d'une boucle parallèle en multi-thread.
Contexte d'éxecution d'une tâche.
Definition Task.h:47
API interne à Arcane de 'TaskFactory'.
Fabrique pour les tâches.
Definition TaskFactory.h:33
Fonctor pour une tâche prenant un TaskContext en argument.
Definition Task.h:144
Fonctor sans argument pour une tâche.
Definition Task.h:99
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Espace de nom de Arccore.