je suis en train de revenir sur le travail d'un developpeur qui a écrit une application serveur en C++
-le bute de son appli est de ce connecter a une base de donnée durant toute son éxecution
en plus de cela il y a une interface graphique
-donc c'est une application multiThreads(multitaches)le probléme c'est qu'il n'a pas intégrer les Threads dans cette appli du coup quand la tache de fond est en exécution(connection a la BD) l'interface graphique freeze ou block quelque secondes a chaque click de souris sur l'interface (ex: pour remplir des champs de texte)
-aprés avoir bien scruté les sources je constate qu'il utilise QT4 pour l'interface graphique et les cnx réseau. Je peut donc soit utilisé QT pour les Threads(mais je trouve ca trés difficile toute est en anglais ya pas trop de forum en francais et tous n'est pas trés claire avec QT),
Ou je peut utilisé l'api Windows pour les Threads(ce que je veux utiliser)
***Mon probléme c'est que je n'avais jamais utiliser les Threads avant et je ne comprend pas trés bien comment les utilisé.
-l'objectif des Threads lui est bien compris mon plus gros soucis est d'intégrer ca dans les classes déja existante.
si quelqu'un peut m'aidé ca serais trés simpa
et merci d'avance ...
Ca serait stupide d'utiliser l'API Win au lieu de Qt (plus de portabilité, pas d'interopérabilité entre les toolkits...). Pourquoi tu n'utilise pas les QThread ? La documentation est clair et il y'a un exemple qui parle de lui même : http://doc.trolltech.com/4.1/qthread.html
Je ne suis pas d'accord : si son programme n'est destiné qu'à des machines windows, et s'il a juste besoin de la gestion des threads, il n'a pas forcément envie de se trimballer la dll de QT partout.
Ou comment utiliser un tank pour tuer une mouche...
AMHA mélanger des chameaux et des carottes c'est pas génial (donc mélanger API Win32 et Qt) de plus en comparant rapidement les deux approches il me semble que les threads de Qt sont plus facilemement utilisable et ca lui évite également d'encapsuler dans d'autre classe l'API Win32. (d'ailleurs Qt n'a pas de DLL, il est compilé statiquement dans l'application aux dernières nouvelles)
alors avec les QThread de qt je n'arrive pas a faire fonctionner mon programme
mais avec l'api windows j'arrive a crer des threads bidons (genre affiché en console pour voir si tou ce fait bien en méme tps)donc les threads marche trés bien .
mais kan je veux éxécuté une parti de ma fonction en passant par les thread ca plante
QStringList ip;
ip.clear();
ip = db->getNewTpe();
printf("taille ip =%d\\n",ip.size());
if (ip.size() > 0)
{
for (int i = 0; i < ip.size(); ++i)
{
****************************************************************
if (ip[i] != db->getSecu())
{qDebug()<<"ici";
CClient *client = new CClient(ip[i], 10002, 10000);
if (client->connection())
{
QString res = client->sendGetIdentifiant();
QString test;
test.setNum((unsigned char)res[14].toAscii());
if ((unsigned char)res[14].toAscii() == 1)
{
int i = res[11].toAscii() * L'\\x100' + res[12].toAscii();
QString num;
db->addTpe(client->getIp(), num.setNum(i));
}
else
{
int i = res[11].toAscii() * L'\\x100' + res[12].toAscii();
QString num;
db->addTpe(client->getIp(), num.setNum(i));
res.remove(0, 11);
res.remove(res.size() - 4, 3);
db->updateIdent(res.split(13));
}
}
delete client;
}
**********************************************************************************************
}
}
printf("end\\n");
}
ce que je veux c'est que la parti qui est entre les lignes d'étoile soit géré par un thread
mais comme je vous les dis plus haut ca plante a la compile.
en autre chose si ca peut vous aidé pour créer un thread bidon dans cette classe qui contient cette fonction je suis obligé de méttre le mot clé static devant la fonction
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)
If you'd like to join us, read "How do we work at OpenClassrooms"! :)