====Exemples====
* En version lambda :
#include
#include
int main()
{
std::thread t([](){
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "thread function\n";
});
std::this_thread::sleep_for(std::chrono::seconds(2));
std::cout << "main thread\n";
t.join();
return 0;
}
* Avec un timeout avec ''std::jthread'' :
#include
#include
int main()
{
std::jthread t([](std::stop_token tt){
while (!tt.stop_requested())
{
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cout << "thread function\n";
}
});
std::this_thread::sleep_for(std::chrono::seconds(2));
std::cout << "main thread\n";
t.request_stop();
t.join();
return 0;
}
====Bugs====
===‘sleep_for’ is not a member of ‘std::this_thread’===
Erreur valable pour les versions de GCC 4.6 et 4.7.
Ajouter le define ''-D_GLIBCXX_USE_NANOSLEEP'' directement dans l'option de compilation de GCC. C'est mieux que de faire un ''#define _GLIBCXX_USE_NANOSLEEP'' avant le ''#include ''.
[[https://stackoverflow.com/questions/4438084/stdthis-threadsleep-for-and-gcc|std::this_thread::sleep_for() and GCC]] {{ lang:cpp:thread:c_-_std_this_thread_sleep_for_and_gcc_-_stack_overflow_2020-02-05_22_01_32_.html |Archive du 14/12/2010 le 05/02/2020}}