Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arccore::SpinLock

SpinLock. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/concurrency/arccore/concurrency/SpinLock.h>

+ Graphe de collaboration de Arccore::SpinLock:

Classes

class  ManualLock
 
class  ScopedLock
 

Types publics

enum class  eMode : uint8_t { None , Auto , FullSpin , SpinAndMutex }
 Mode du spinlock. Le défaut est 'Auto'. Plus de détails...
 

Fonctions membres publiques

 SpinLock ()
 SpinLock par défaut.
 
 SpinLock (eMode mode)
 SpinLock avec le mode mode.
 

Fonctions membres privées

void _doLock ()
 
void _doUnlock ()
 
void _doLockReal ()
 
void _doUnlockReal ()
 

Attributs privés

std::atomic_flag m_spin_lock = ATOMIC_FLAG_INIT
 
eMode m_mode = eMode::SpinAndMutex
 

Amis

class ScopedLock
 
class ManualLock
 

Description détaillée

Documentation des énumérations membres

◆ eMode

enum class Arccore::SpinLock::eMode : uint8_t
strong

Mode du spinlock. Le défaut est 'Auto'.

Valeurs énumérées
Auto 

Choix automatique.

Si Concurrency::getThreadImplementation()->isMultiThread() est vrai, alors le mode est SpinAndMutex. Sinon, le mode est None.

FullSpin 

Utilise toujours un spinlock.

Ce type est plus rapide s'il y a très peu de contention mais les performances sont très mauvaises dans le cas contraire.

SpinAndMutex 

SpinLock puis mutex.

Effectue un spinlock puis rend la main (std::this_thread::yield()) si cela dure trop longtemps. Ce mode n'est disponible que si on utilise le C++20. Sinon, il est équivalent à FullSpin.

Définition à la ligne 81 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

Documentation des constructeurs et destructeur

◆ SpinLock() [1/2]

Arccore::SpinLock::SpinLock ( )

SpinLock par défaut.

Définition à la ligne 36 du fichier SpinLock.cc.

Références SpinAndMutex.

◆ SpinLock() [2/2]

Arccore::SpinLock::SpinLock ( eMode  mode)

SpinLock avec le mode mode.

Définition à la ligne 47 du fichier SpinLock.cc.

◆ ~SpinLock()

Arccore::SpinLock::~SpinLock ( )

Définition à la ligne 57 du fichier SpinLock.cc.

Documentation des fonctions membres

◆ _doLock()

void Arccore::SpinLock::_doLock ( )
inlineprivate

Définition à la ligne 124 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

◆ _doLockReal()

void Arccore::SpinLock::_doLockReal ( )
private

Définition à la ligne 65 du fichier SpinLock.cc.

◆ _doUnlock()

void Arccore::SpinLock::_doUnlock ( )
inlineprivate

Définition à la ligne 129 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

◆ _doUnlockReal()

void Arccore::SpinLock::_doUnlockReal ( )
private

Définition à la ligne 80 du fichier SpinLock.cc.

Documentation des fonctions amies et associées

◆ ManualLock

friend class ManualLock
friend

Définition à la ligne 76 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

◆ ScopedLock

friend class ScopedLock
friend

Définition à la ligne 75 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

Documentation des données membres

◆ m_mode

eMode Arccore::SpinLock::m_mode = eMode::SpinAndMutex
private

Définition à la ligne 120 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.

◆ m_spin_lock

std::atomic_flag Arccore::SpinLock::m_spin_lock = ATOMIC_FLAG_INIT
private

Définition à la ligne 119 du fichier arccore/src/concurrency/arccore/concurrency/SpinLock.h.


La documentation de cette classe a été générée à partir des fichiers suivants :