Arcane
v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
SequentialSection.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
/* SequentialSection.h (C) 2000-2025 */
9
/* */
10
/* Section du code à exécuter séquentiellement. */
11
/*---------------------------------------------------------------------------*/
12
#ifndef ARCANE_CORE_SEQUENTIALSECTION_H
13
#define ARCANE_CORE_SEQUENTIALSECTION_H
14
/*---------------------------------------------------------------------------*/
15
/*---------------------------------------------------------------------------*/
16
17
#include "arcane/utils/ParallelFatalErrorException.h"
18
19
/*---------------------------------------------------------------------------*/
20
/*---------------------------------------------------------------------------*/
21
22
namespace
Arcane
23
{
24
25
/*---------------------------------------------------------------------------*/
26
/*---------------------------------------------------------------------------*/
27
/*!
28
* \brief Section de code à exécuter séquentiellement.
29
*
30
* Une instance de cette classe permet à une partie du code de s'exécuter
31
* un peu comme si le code était séquentiel. Le code compris dans la durée
32
* de vie de cet objet est d'abord exécuté sur le proc 0, puis si tout est
33
* ok sur les autres. Cela permet lorsque le code exécuter est le même
34
* partout (par exemple la lecture du jeu de données) de le vérifier une
35
* fois et en cas d'erreur d'afficher une seule fois les messages.
36
*
37
* Comme les erreurs éventuelles ne sont affichées que par un seul
38
* sous-domaine, cette classe ne doit être utilisée que lorsqu'on est
39
* certain que tout les sous-domaines font le même traitement faute
40
* de quoi les erreurs ne seront pas reconnues.
41
*
42
* De plus, comme tous les sous-domaines bloquent tant que le premier
43
* sous-domaine n'a pas fini d'exécuter le code, il faut ne faut pas
44
* faire d'appel au gestionnaire de parallélisme dans cette partie.
45
*
46
* En cas d'erreur, une exception de type ExParallelFatalError est
47
* envoyée dans le destructeur.
48
*
49
\code
50
* {
51
* SequentialSection ss(pm);
52
* ... // Code exécuté séquentiellement.
53
* ss.setError(true);
54
* }
55
\endcode
56
*
57
*/
58
class
ARCANE_CORE_EXPORT SequentialSection
59
{
60
public
:
61
62
explicit
SequentialSection(
IParallelMng
*);
63
explicit
SequentialSection(
ISubDomain
*);
64
~SequentialSection() ARCANE_NOEXCEPT_FALSE;
65
66
public
:
67
68
void
setError(
bool
is_error);
69
70
private
:
71
72
IParallelMng
* m_parallel_mng =
nullptr
;
73
bool
m_has_error =
false
;
74
75
void
_init();
76
void
_sendError();
77
};
78
79
/*---------------------------------------------------------------------------*/
80
/*---------------------------------------------------------------------------*/
81
82
}
// namespace Arcane
83
84
/*---------------------------------------------------------------------------*/
85
/*---------------------------------------------------------------------------*/
86
87
#endif
88
Arcane::IParallelMng
Interface du gestionnaire de parallélisme pour un sous-domaine.
Definition
IParallelMng.h:52
Arcane::ISubDomain
Interface du gestionnaire d'un sous-domaine.
Definition
ISubDomain.h:74
Arcane
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Definition
AbstractCaseDocumentVisitor.cc:20
arcane
core
SequentialSection.h
Généré le Lundi 16 Juin 2025 03:14:33 pour Arcane par
1.13.2