J'essaie de me souvenir du fonctionnement des threads, je vois qu'avec C++11
il simplifie la création et l'utilisation de celui-ci. J'utilise la réponse à ce poste Simple example of threading in C++ pour simplement créer un fil simple.Erreur simple avec la création d'un fil
Mais il y a une différence entre moi et la réponse du post, je ne suis pas dans un main, donc je crée mon thread dans un constructeur, et ce n'est pas les mêmes paramètres.
Voici mon code simple et ce que j'essaie de faire:
Je suis dans une classe mainWindow.cpp
:
//Constructor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// Constructs the new thread and runs it. Does not block execution.
thread t1(lancerServeur, NULL);
ui->setupUi(this);
}
void MainWindow::lancerServeur(){
std::cout << "Le serveur se lance";
}
Les erreurs sont les suivantes:
expected ';' before 't1'
statement cannot resolve address of overloaded function thread t1(lancerServeur, NULL);
Je pense que mes paramètres thread t1(lancerServeur, NULL);
sont faux.
Pourriez-vous me expliquer comment cela fonctionne?
Merci.
J'ai quand je l'utilise std devant de thread: pas de fonction correspondante pour l'appel à 'std :: thread :: thread (, NULL)' –
La fonction 'MainWindow :: lancerServeur' devrait être statique ou utiliser un 'lambda' std :: thread ([this]() {this-> lancerServeur();}); ' – Niall
Si je le mets statique, j'ai ceci: aucun type nommé 'type' dans 'class std :: result_of ' typedef typename result_of <_Callable (_Args ...)> :: type result_type; –