Outils pour utilisateurs

Outils du site


lang:cpp:thread

Exemples

  • En version lambda :
#include <iostream>
#include <thread>
 
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 <iostream>
#include <thread>
 
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 <thread>.

std::this_thread::sleep_for() and GCC Archive du 14/12/2010 le 05/02/2020

lang/cpp/thread.txt · Dernière modification : 2020/02/06 14:00 de root