Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Classe Clock et les threads.  (Lu 6986 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Classe Clock et les threads.
« le: Juin 04, 2013, 05:03:01 pm »
Salut, est ce que la classe clock est synchronisée lorsque l'on utilise plusieurs thread autrement dis, le temps qu'utilise la classe sf::Clock est-il le même dans chaque thread ? (Ou bien est ce différent pour chaque thread ?)

J'ai vu le code de la classe clock mais je ne sais pas du tout ce qu'il signifie, jamais travaillé au sein des os.

Y'a t'il une différence entre le classe Clock de la SFML et la librairie ctime ?

Je pense que je vais plutôt me tourner vers std::thread et std::chrono car j'ai quelques problèmes. :/

PS : J'ai pu lire que la  nouvelle librairie std::thread inclus avec le c++11 semble mieux, j'hésite encore à changer mon code mais je suis tenté de le faire.

« Modifié: Juin 04, 2013, 05:10:21 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Classe Clock et les threads.
« Réponse #1 le: Juin 04, 2013, 07:07:10 pm »
Si tu peux utiliser la lib standard C++11 alors fonce, elle est forcément meilleure que SFML ;)
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Classe Clock et les threads.
« Réponse #2 le: Juin 04, 2013, 07:15:49 pm »
Ok alors je fonce dès que j'aurai trouvé quelques tutos sur son utilisation.

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Classe Clock et les threads.
« Réponse #3 le: Juin 04, 2013, 09:10:06 pm »
Sauf qu'elle est pas encore utilisable...
La dernière foi que j'ai essayé je me suis aperçut que serte les .h étaient complets mais que rien était implémenté... Alors oui tu peux instancier un thread... mais voilà.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Classe Clock et les threads.
« Réponse #4 le: Juin 04, 2013, 09:22:37 pm »
Avec quel compilateur ?
Laurent Gomila - SFML developer

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Classe Clock et les threads.
« Réponse #5 le: Juin 04, 2013, 11:33:47 pm »
En fait jviens de voir que chuis plus à la bourre que je pensais, j'ai la 472 (donc de fin septembre) ça a dût être intégré depuis va falloir que je regarde les logs pour passer std::thread si c'est possible maintenant...

Mais ce qui m'avait surpris c'est que j'utilise en gros tout ce que propose c++11 et c'était le seul truc qui était annoncé comme incomplet totalement inutilisable. Mais vu qu'on est maintenant à la 381 ça doit être bon. ^^
(et j'espère qu'ils en ont profité pour réparer leurs conneries avec les maps)

edit: d'après les status ça a l'air supporté, par contre c'est toujours très incomplet et ya toujours pas les futures malheureusement. :/
« Modifié: Juin 04, 2013, 11:40:49 pm par Eroy »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Classe Clock et les threads.
« Réponse #6 le: Juin 05, 2013, 08:00:21 am »
Citer
j'ai la 472
Citer
Mais vu qu'on est maintenant à la 381
Mais tu parles de quoi là ? :P
Laurent Gomila - SFML developer

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Classe Clock et les threads.
« Réponse #7 le: Juin 05, 2013, 09:09:51 am »
Rien jmélange les versions de différents trucs, spas grave.  ;D

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Classe Clock et les threads.
« Réponse #8 le: Juin 05, 2013, 09:14:21 am »
Ce serait quand même bénéfique à la discussion si on savait de quel compilateur tu parles :P
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Classe Clock et les threads.
« Réponse #9 le: Juin 05, 2013, 10:28:35 am »
Moi j'ai téléchargé la 4.8 de mingw mais je dois installer une version plus récente de Qt car avec la version 4.7 de Qt ça ne marche pas j'ai des erreurs de ce genre.

Citer
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|217|warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp||In constructor 'ChooseFactionWidget::ChooseFactionWidget(MyFrame*)':|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|23|error: unable to find string literal operator 'operator"" __FILE__'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|214|note: in definition of macro 'QTOSTRING_HELPER'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|217|note: in expansion of macro 'QTOSTRING'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|220|note: in expansion of macro 'QLOCATION'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|23|note: in expansion of macro 'SIGNAL'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|23|error: unable to find string literal operator 'operator"" __FILE__'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|214|note: in definition of macro 'QTOSTRING_HELPER'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|217|note: in expansion of macro 'QTOSTRING'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|219|note: in expansion of macro 'QLOCATION'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|23|note: in expansion of macro 'SLOT'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|24|error: unable to find string literal operator 'operator"" __FILE__'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|214|note: in definition of macro 'QTOSTRING_HELPER'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|217|note: in expansion of macro 'QTOSTRING'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|220|note: in expansion of macro 'QLOCATION'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|24|note: in expansion of macro 'SIGNAL'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|24|error: unable to find string literal operator 'operator"" __FILE__'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|214|note: in definition of macro 'QTOSTRING_HELPER'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|217|note: in expansion of macro 'QTOSTRING'|
C:\Qt\2010.05\qt\include\QtCore\..\..\src\corelib\kernel\qobjectdefs.h|219|note: in expansion of macro 'QLOCATION'|
D:\Projets-c++\Sorrok\GraphicEngine\chooseFactionWidget.cpp|24|note: in expansion of macro 'SLOT'|
||=== Build finished: 4 errors, 1 warnings (0 minutes, 20 seconds) ===|

Je devrai recompiler Qt pour le support du plugin pour le driver mysql, rhalalalala...

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Classe Clock et les threads.
« Réponse #10 le: Juin 05, 2013, 12:35:07 pm »
je l'ai pas précisé mais je parle de gcc et donc 381 = 4.8.1 ^^
Je suis tellement habitué à utilisé uniquement celui-là que j'ai oublié que yen avait d'autres. :p

En regardant les changes je ne vois rien à ce qui concerne les threads même pour la version 4.9 à venir. :/

Voilà ce que je me tape avec gcc 4.7.2 en tout cas :
error: 'std::this_thread' has not been declared
error: 'thread' is not a member of 'std'
(avec cet exemple : http://en.cppreference.com/w/cpp/thread/thread/thread)

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Classe Clock et les threads.
« Réponse #11 le: Juin 05, 2013, 01:40:08 pm »
Ha, ok je vais essayer, j'ai installer une version plus recente de Qt et je n'ai plus cet erreur par contre j'ai un plantage de la commande moc avec VS2012 donc je ne sais plus générer mes .moc, je vais essayer avec la version 32bits de Qt.
Je sais que j'ai eu vent que ce n'était pas encore au point partout la 64 bits au niveau développement.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Classe Clock et les threads.
« Réponse #12 le: Juin 05, 2013, 01:45:11 pm »
Bon bah je viens de tester tout sans Qt ni sfml ni rien, juste avec l'exemple dans le lien que tu m'a donné :
#include <iostream>
#include <utility>
#include <thread>
#include <chrono>
#include <functional>
#include <atomic>

void f1(int n)
{
    for (int i = 0; i < 5; ++i) {
        std::cout << "Thread " << n << " executing\n";
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
}

void f2(int& n)
{
    for (int i = 0; i < 5; ++i) {
        std::cout << "Thread 2 executing\n";
        ++n;
        std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
}

int main()
{
    int n = 0;
    std::thread t1; // t1 is not a thread
    std::thread t2(f1, n + 1); // pass by value
    std::thread t3(f2, std::ref(n)); // pass by reference
    std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
    t2.join();
    t4.join();
    std::cout << "Final value of n is " << n << '\n';
}
 

Bah chez moi ça tourne!
Bon j'espère que mon projet va moins laguer avec ça, mais avant tout il faut que j'arrive à réinstaller QT.

Eroy

  • Jr. Member
  • **
  • Messages: 60
    • Voir le profil
    • E-mail
Re : Classe Clock et les threads.
« Réponse #13 le: Juin 05, 2013, 04:27:56 pm »
Ok, ça a donc dût être mis à jour depuis, c'est cool faudra que je recode quelques trucs avec. :3

Par contre loli, bon j'ai l'impression de me répéter à chaque foi mais... Ton problème vient pas de ce que tu utilises... Quelque soit la lib c'est assez optimisé pour que tu ne vois aucune différence entre l'une ou l'autre... C'est pas en passant de sfml à std pour les threads que tu verras la différence.
C'est comme un joueur de tennis pro qui te dira que ya une énorme différence entre une balle de grande surface et la marque officielle qu'il utilise...

donc :
Citer
j'espère que mon projet va moins laguer avec ça
Non !

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Classe Clock et les threads.
« Réponse #14 le: Juin 05, 2013, 05:17:36 pm »
Erf ok, mais ça ne marche que en 64 bits là le c++11.

Je pense aussi que ça ne réglera pas le bug mais bon..., je vais toujours essayer.