CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Thread, python!=c++

linux13-04
linux13-04
Niveau 8
15 juillet 2014 à 23:19:09

Salut,

Je viens de voir comment utiliser les threads d'abord en python, puis après j'ai été voir ce que ça donnait du coté c++, et quelque chose m'interpelle c'est qu'en python les threads se lancent en arrière plan et la programme principal continue alors qu'en cpp les threads sont "bloquants".

Code python : http://pastebin.com/HaXBef36
Code c++ : http://pastebin.com/0EAysBim

Résultat python : http://pastebin.com/GxdjKESC
Résultat c++ : http://pastebin.com/ggD3Bpqz

Pourquoi ça fait ça en c++ ? :( L'interêt des thread est entre autre d'éviter des bloquages non ?

Pseudo supprimé
Pseudo supprimé 15 juillet 2014 à 23:53:07

Il n'y a que le premier qui est un peu tranché : "N°Gluten...1".

Sinon le system pause c'est en secondes ? Peut-être que le lancement des threads prend du temps.

Pseudo supprimé
Pseudo supprimé 15 juillet 2014 à 23:59:18

J'ai rien dit concernant le system...

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 00:05:18

Bon voilà, d'après une doc, join va ATTENDRE que le Thread soit terminé avant de continuer. Juste initialiser l'objet suffit à le lancer alors. :ok:

godrik
godrik
Niveau 30
16 juillet 2014 à 02:14:29

manboy a raison, il n'y a pas de raison que les threads soit ordonne. cependant appelle join provoque ine attente explicite sur la fin du thread.

linux13-04
linux13-04
Niveau 8
16 juillet 2014 à 10:36:05

Je viens de tester sans les join(), les threads se lancent bien :oui:

"Blocks the current thread until the thread identified by *this finishes its execution. "

Ce qu'il appelle "the current thread" c'est bien mon main() ? Pourquoi en enlevant les join() mon programme ne réagit pas comme en python ? Pourquoi mon main() n'est pas executé en parralelle des autres threas ? comment arriver à ce résultat ?

  1. Bon voilà, d'après une doc, join va ATTENDRE que le Thread soit terminé avant de continuer.

Du coup où est l'interêt du thread dans ce cas ? Pourquoi ne pas simplement appeler la fonction qu'on a entré dans thread(fonction) ?

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 11:17:45

The current thread c'est celui d'où tu appelles join, donc oui généralement c'est le thread principal.

L'intérêt du join peut être utile si tu as besoin que tout soit fini avant de continuer.
Par exemple tu veux faire pleins de tests, tu vas faire plusieurs threads pour faire les calculs plus vite, et après tu vas attendre qu'ils aient tous fini (ce qui normalement est plus rapide que d'avoir utilisé un seul thread) puis par exemple dessiner à l'écran. En tout cas il faut éviter que les threads travaillent sur les mêmes variables, sinon il faut utiliser des mutex et c'est dans ce cas qu'ils se bloquent entre eux. :ok:

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 11:19:32

Tu dis que même sans les join() t'as le même résultat qu'avec ? Comme dans ton 4ème PasteBin ?

linux13-04
linux13-04
Niveau 8
16 juillet 2014 à 11:48:18

Ouppss, j'avais compilé le mauvais fichier, le main se lance bien en même temps :oui:

Par contre il refuse la saisie de mon mot : http://pastebin.com/EmAwuAZs

J'ai essayé d'enlever le "cout" dans la fonction du thread pour éviter de "salir" la sortie standart mais ça fait pareil :(

Pseudo supprimé
Pseudo supprimé 16 juillet 2014 à 23:43:05

Pourtant tu as bien écrit "unmot"...
Si tu fais des cout c'est normal que ça se fasse par dessus ton cin... Enfin je crois :(

linux13-04
linux13-04
Niveau 8
17 juillet 2014 à 12:28:21

Oui le "unmot" passe, mais le programme se ferme brusquement juste après alors que les threads ne sont pas finis, donc il faudrait un truc comme join (pour attendre la fin des threads), mais qui laisse la main au programme principal

Pseudo supprimé
Pseudo supprimé 17 juillet 2014 à 15:35:30

Et bien il suffit de mettre tes join quand même mais après cin, avant de quitter le programme...

linux13-04
linux13-04
Niveau 8
17 juillet 2014 à 19:45:34

:bave: oui

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment