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