[ Web Proxy ]
URL:
Viewing: https://fr.cppreference.com/cpp/thread/thread/thread [Back]  [Original]

std::thread::thread cppreference.com
cppreference.com
Espaces de noms
Variantes

std::thread::thread

De cppreference.com


 
 
Bibliothque 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 gnrique
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)
 
std::thread
Classes de membres
Original:
Member classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread::id
Les fonctions membres
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread::thread
thread::~thread
thread::operator=
Des observateurs
Original:
Observers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread::joinable
thread::get_id
thread::native_handle
thread::hardware_concurrency
Oprations
Original:
Operations
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread::join
thread::detach
thread::swap
Tiers fonctions
Original:
Non-member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
std::swap
 
<tbody> </tbody>
thread();
(1) (depuis C++11)
thread( thread&& other );
(2) (depuis C++11)
template< class Function, class... Args > explicit thread( Function&& f, Args&&... args );
(3) (depuis C++11)
thread(const thread&) = delete;
(4) (depuis C++11)
Construit objet nouveau thread .
Original:
Constructs new thread object.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
1)
Cre un objet nouveau thread qui ne reprsente pas un fil .
Original:
Creates new thread object which does not represent a thread.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
2)
Dplacez constructeur. Construit l'objet thread pour reprsenter le thread d'excution qui a t reprsent par other. Aprs cet appel other ne reprsente plus un thread d'excution .
Original:
Move constructor. Constructs the thread object to represent the thread of execution that was represented by other. After this call other no longer represents a thread of execution.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3)
Cre un nouveau std::thread objet et l'associe un thread d'excution. D'abord le constructeur de copie toutes args... arguments pour stockage local des threads comme par la fonction:
Original:
Creates new std::thread object and associates it with a thread of execution. First the constructor copies all arguments args... to thread-local storage as if by the function:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
template <class T>
typename decay<T>::type decay_copy(T&& v) {
    return std::forward<T>(v);
}
@ @ Toutes les exceptions leves lors de l'valuation et de la copie des arguments sont jets dans le thread en cours, et non pas le nouveau thread .
Original:
@@ Any exceptions thrown during evaluation and copying of the arguments are thrown in the current thread, not the new thread.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
@ @ Le code qui sera excut dans le nouveau thread est dfini comme suit.
Nous allons consulter Nonecopied_args comme t1, t2, ..., tN, o N est
sizeof...(copied_args)and copied_args is the result of calling decay_copy as defined above. The following code will be run in the new thread:
Original:
Let's refer to Nonecopied_args as t1, t2, ..., tN, where N is sizeof...(copied_args)and copied_args is the result of calling decay_copy as defined above. The following code will be run in the new thread:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Si f est un pointeur vers une fonction membre de la classe T, il est alors appel. La valeur de retour est ignore. En effet, le code suivant est excut:
    Original:
    If f is pointer to a member function of class T, then it is called. The return value is ignored. Effectively, the following code is executed:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • (t1.*f)(t2, ..., tN) si le type de t1 est soit T, la rfrence T ou de rfrence taper driv de T .
    Original:
    (t1.*f)(t2, ..., tN) if the type of t1 is either T, reference to T or reference to type derived from T.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • ((*t1).*f)(t2, ..., tN) autrement .
    Original:
    ((*t1).*f)(t2, ..., tN) otherwise.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si N == 1 et f est pointeur vers un objet membre de donnes d'une classe, il est alors accessible. La valeur de l'objet est ignor. En effet, le code suivant est excut:
    Original:
    If N == 1 and f is pointer to a member data object of a class, then it is accessed. The value of the object is ignored. Effectively, the following code is executed:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si t1.*f et du type de t1 est soit T, ou rfrence T rfrence au type driv de T .
    Original:
    t1.*f if and the type of t1 is either T, reference to T or reference to type derived from T.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • (*t1).*f autrement .
    Original:
    (*t1).*f otherwise.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • f est appel comme un pointeur vers une fonction non-membre dans les autres cas. La valeur de retour est ignore. En effet, f(t1, t2, ..., tN) est excut .
    Original:
    f is called as a pointer to a non-member function in all other cases. The return value is ignored. Effectively, f(t1, t2, ..., tN) is executed.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
Original:
@@ The code that will be run in the new thread is defined as follows.
Nous allons consulter Nonecopied_args comme t1, t2, ..., tN, o N est
sizeof...(copied_args)and copied_args is the result of calling decay_copy as defined above. The following code will be run in the new thread:
Original:
Let's refer to Nonecopied_args as t1, t2, ..., tN, where N is sizeof...(copied_args)and copied_args is the result of calling decay_copy as defined above. The following code will be run in the new thread:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Si f est un pointeur vers une fonction membre de la classe T, il est alors appel. La valeur de retour est ignore. En effet, le code suivant est excut:
    Original:
    If f is pointer to a member function of class T, then it is called. The return value is ignored. Effectively, the following code is executed:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • (t1.*f)(t2, ..., tN) si le type de t1 est soit T, la rfrence T ou de rfrence taper driv de T .
    Original:
    (t1.*f)(t2, ..., tN) if the type of t1 is either T, reference to T or reference to type derived from T.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • ((*t1).*f)(t2, ..., tN) autrement .
    Original:
    ((*t1).*f)(t2, ..., tN) otherwise.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si N == 1 et f est pointeur vers un objet membre de donnes d'une classe, il est alors accessible. La valeur de l'objet est ignor. En effet, le code suivant est excut:
    Original:
    If N == 1 and f is pointer to a member data object of a class, then it is accessed. The value of the object is ignored. Effectively, the following code is executed:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si t1.*f et du type de t1 est soit T, ou rfrence T rfrence au type driv de T .
    Original:
    t1.*f if and the type of t1 is either T, reference to T or reference to type derived from T.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • (*t1).*f autrement .
    Original:
    (*t1).*f otherwise.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • f est appel comme un pointeur vers une fonction non-membre dans les autres cas. La valeur de retour est ignore. En effet, f(t1, t2, ..., tN) est excut .
    Original:
    f is called as a pointer to a non-member function in all other cases. The return value is ignored. Effectively, f(t1, t2, ..., tN) is executed.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
4)
Le constructeur de copie est supprime; fils ne sont pas copiable. Il n'ya pas deux std::thread objets peuvent reprsenter le mme thread d'excution .
Original:
The copy constructor is deleted; threads are not copyable. No two std::thread objects may represent the same thread of execution.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Paramtres

other -
un autre objet thread pour construire cet objet thread avec
Original:
another thread object to construct this thread object with
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
f -
fonctionner excuter dans le nouveau thread
Original:
function to execute in the new thread
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
args... -
arguments passer la nouvelle fonction
Original:
arguments to pass to the new function
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Exceptions

1-2)
noexcept specification:  
<tbody> </tbody>
noexcept
   (depuis C++11)
3)
std::system_error si le thread n'a pas pu tre dmarr. L'exception peut reprsenter le std::errc::resource_unavailable_try_again condition d'erreur ou d'une autre condition d'erreur spcifique l'implmentation .
Original:
std::system_error if the thread could not be started. The exception may represent the error condition std::errc::resource_unavailable_try_again or another implementation-specific error condition.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Notes

Les arguments de la fonction de thread sont copies par valeur. Si un argument de rfrence doit tre pass la fonction de thread, il doit tre envelopp (par exemple avec std::ref ou std::cref) .
Original:
The arguments to the thread function are copied by value. If a reference argument needs to be passed to the thread function, it has to be wrapped (e.g. with std::ref or std::cref).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Toute valeur de retour de la fonction est ignore. Si la fonction lve une exception, std::terminate est appele. Afin de passer des valeurs de retour ou des exceptions au thread, appelez ou std::promise std::async peut tre utilis .
Original:
Any return value from the function is ignored. If the function throws an exception, std::terminate is called. In order to pass return values or exceptions back to the calling thread, std::promise or std::async may be used.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Exemple

#include <iostream>
#include <utility>
#include <thread>
#include <chrono>
#include <functional>
#include <atomic>

void f1(int n)
{
    for(int i=0; i<5; ++i) {
        std::cout << "Thread " << n << " executing\n";
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
}

void f2(int& n)
{
    for(int i=0; i<5; ++i) {
        std::cout << "Thread 2 executing\n";
        ++n;
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
}

int main()
{
    int n = 0;
    std::thread t1; // t1 is not a thread
    std::thread t2(f1, n+1); // pass by value
    std::thread t3(f2, std::ref(n)); // pass by reference
    std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
    t2.join();
    t4.join();
    std::cout << "Final value of n is " << n << '\n';
}

Rsultat possible :

Thread 1 executing
Thread 2 executing
Thread 1 executing
Thread 2 executing
Thread 1 executing
Thread 2 executing
Thread 1 executing
Thread 2 executing
Thread 1 executing
Thread 2 executing
Final value of n is 5

Web Proxy Viewer  |  New URL  |  Original Page