Bonjour,
utilisant d'habitude Qt, j'ai voulu tester la gestion des threads de la bibliothèque standard mais j'ai rencontré un problème. Voici un petit programme de test qui met ce problème en évidence:
source.cpp:
testThread.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "testThread.h" #include <iostream> int main() { testThread test(5); return 0; }
testThread.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #pragma once class testThread { public: testThread(int param); private: void runThread(); int itr; };
La classe testThread lance donc un thread qui affiche hello autant de fois que la valeur du paramètre passé lors de son instanciation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <thread> #include <iostream> #include "testThread.h" testThread::testThread(int param):itr(param) { std::thread myThread(&testThread::runThread, this); } void testThread::runThread() { for (int i = 0; i < itr; i++) std::cout << "hello" << std::endl; }
Cependant, même si l'affichage final est correct, j'obtiens le message d'erreur joint en mode debug:
En mode release, le programme crashe.
Je travaille avec visual studio 2013.
merci à ceux qui prendront le temps de lire ce message et pourront m'apporter une solution.
Partager