Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
RunQueueEvent.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* RunQueueEvent.h (C) 2000-2024 */
9/* */
10/* Evènement sur une file d'exécution. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_CORE_RUNQUEUEEVENT_H
13#define ARCANE_ACCELERATOR_CORE_RUNQUEUEEVENT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Ref.h"
18
19#include "arcane/accelerator/core/RunCommand.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::Accelerator
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29/*!
30 * \brief Evènement pour une file d'exécution.
31 * \warning API en cours de définition.
32 *
33 * Les méthodes RunQueue::recordEvent() et RunQueue::waitEvent() permettent
34 * d'associer un RunQueueEvent à une RunQueue donnée.
35 */
36class ARCANE_ACCELERATOR_CORE_EXPORT RunQueueEvent
37{
38 friend RunQueueEvent makeEvent(Runner& runner);
39 friend Ref<RunQueueEvent> makeEventRef(Runner& runner);
40 friend RunQueue;
41 friend impl::RunQueueImpl;
42
43 private:
44
45 //! Construit un évènement. Utiliser makeEvent() pour constuire une instance
46 explicit RunQueueEvent(Runner& runner);
47
48 public:
49
51 RunQueueEvent(const RunQueueEvent&) = delete;
52 RunQueueEvent& operator=(const RunQueueEvent&) = delete;
53
54 public:
55
56 void wait();
57
58 private:
59
60 impl::IRunQueueEventImpl* _internalEventImpl() const { return m_p; }
61
62 private:
63
64 impl::IRunQueueEventImpl* m_p;
65};
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
72/*!
73 * \brief Créé un évènement associé à \a runner.
74 */
75inline RunQueueEvent
77{
78 return RunQueueEvent(runner);
79}
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83/*!
84 * \brief Créé un évènement associé à \a runner.
85 */
86inline Ref<RunQueueEvent>
88{
89 return makeRef(new RunQueueEvent(runner));
90}
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94
95} // End namespace Arcane::Accelerator
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
100#endif
Evènement pour une file d'exécution.
File d'exécution pour un accélérateur.
Gestionnaire d'exécution pour accélérateur.
Definition core/Runner.h:53
Espace de nom pour l'utilisation des accélérateurs.
RunQueueEvent makeEvent(Runner &runner)
Créé un évènement associé à runner.
Ref< RunQueueEvent > makeEventRef(Runner &runner)
Créé un évènement associé à runner.