Espaces de noms
Variantes
Affichages
Actions

std::call_once

De cppreference.com
< cpp‎ | thread

 
 
Bibliothèque de support fil
Threads
Original:
Threads
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread (C++11)
this_thread espace de noms
Original:
this_thread namespace
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
get_id (C++11)
yield (C++11)
sleep_for (C++11)
sleep_until (C++11)
L'exclusion mutuelle
Original:
Mutual exclusion
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex (C++11)
timed_mutex (C++11)
Gestion du verrouillage générique
Original:
Generic lock management
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
lock_guard (C++11)
unique_lock (C++11)
defer_lock_t
try_to_lock_t
adopt_lock_t
(C++11)
(C++11)
(C++11)
lock (C++11)
try_lock (C++11)
defer_lock
try_to_lock
adopt_lock
(C++11)
(C++11)
(C++11)
Les variables de condition
Original:
Condition variables
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
condition_variable (C++11)
condition_variable_any (C++11)
notify_all_at_thread_exit (C++11)
cv_status (C++11)
Futures
Original:
Futures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
promise (C++11)
future (C++11)
shared_future (C++11)
packaged_task (C++11)
async (C++11)
launch (C++11)
future_status (C++11)
future_error (C++11)
future_category (C++11)
future_errc (C++11)
 
Defined in header <mutex>
template< class Function, class... Args >
void call_once( std::once_flag& flag, Function&& f, Args&& args... );
(depuis C++11)
Exécute la fonction f exactement une fois, même si elle est appelée plusieurs threads .
Original:
Executes the function f exactly once, even if called from several threads.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Chaque groupe d'invocations call_once qui reçoit l'objet std::once_flag en sera de même satisfaire aux exigences suivantes:
Original:
Each group of call_once invocations that receives the same std::once_flag object will meet the following requirements:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Exactement une exécution d'exactement une des fonctions (adopté comme f les invocations du groupe) est effectuée. Il est indéfini dont la fonction sera sélectionné pour exécution. La fonction sélectionnée s'exécute dans le même thread que l'invocation call_once elle a été adoptée à .
    Original:
    Exactly one execution of exactly one of the functions (passed as f to the invocations in the group) is performed. It is undefined which function will be selected for execution. The selected function runs in the same thread as the call_once invocation it was passed to.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Aucune invocation dans le groupe revient avant l'exécution susmentionnée de la fonction sélectionnée est terminée avec succès, c'est-à ne pas sortir par une exception .
    Original:
    No invocation in the group returns before the abovementioned execution of the selected function is completed successfully, that is, doesn't exit via an exception.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si la fonction se termine sélectionnés par exception, il se propage à l'appelant. Une autre fonction est alors sélectionné et exécuté .
    Original:
    If the selected function exits via exception, it is propagated to the caller. Another function is then selected and executed.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

Sommaire

[modifier] Paramètres

flag -
un objet, pour laquelle exactement une fonction est exécuté
Original:
an object, for which exactly one function gets executed
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
f -
fonctionner à appeler
Original:
function to call
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
args... -
arguments à transmettre à la fonction
Original:
arguments to pass to the function
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Retourne la valeur

(Aucun)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Exceptions

  • std::system_error si une condition empêche les appels à call_once d'exécuter comme spécifié
    Original:
    std::system_error if any condition prevents calls to call_once from executing as specified
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • toute exception lancée par f
    Original:
    any exception thrown by f
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

[modifier] Exemple

#include <iostream>
#include <thread>
#include <mutex>
 
std::once_flag flag;
 
void do_once()
{
    std::call_once(flag, [](){ std::cout << "Called once" << std::endl; });
}
 
int main()
{
    std::thread t1(do_once);
    std::thread t2(do_once);
    std::thread t3(do_once);
    std::thread t4(do_once);
 
    t1.join();
    t2.join();
    t3.join();
    t4.join();
}

Résultat :

Called once

[modifier] Voir aussi

(C++11)
objet d'aide pour s'assurer que call_once invoque la fonction qu'une seule fois
Original:
helper object to ensure that call_once invokes the function only once
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(classe) [edit]