les thread

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

les thread

Message par dayvid »

pourquoi quand je crée une fenètre avec des gadget + les boucles qui vont avec
et que je lance sa avec un thread, il se coupe directe alors que la boucle ne doit pas se terminer
je sais que ont peut utiliser waitthread mais c'est pas ce qui me faut car
si faut que le programme principale continue en même temps
je ne comprend vraiment rien la, je suis québlo
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Re: les thread

Message par SPH »

Donne un code pour voir

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: les thread

Message par Cls »

Pour corriger, il faut comprendre ce que sont les threads. Ce sont des petites routines de ton programme principal, exécutées en parallèle de manière asynchrone (il est possible de les synchroniser via des sémaphores). Les threads permettent d'effectuer des opérations non bloquantes en parallèle les unes des autres.

Ce qu'il faut savoir, c'est que ces threads sont des fils du programme principal : si le programme ayant lancé le thread se termine, le thread se coupe également.

Concrètement voici un petit exexmple :

Code : Tout sélectionner

; Démonstration THREAD
; Auteur : Cls
; Version : 06 Juillet 2010

; Procédère permettant de créer et gérer une nouvelle fenêtre
Procedure CreateChildInterface(value)
  
  Static nbChild : nbChild + 1; Variable commune à tous les threads utilisant cette fonction
  
  windowId = OpenWindow(#PB_Any, 100, 200, 100, 30, "Child : " + Str(nbChild))
  If windowId
    btnFermer = ButtonGadget(#PB_Any, 0, 0, 100, 30, "Fermer enfant "  + Str(nbChild))
  EndIf
  
  Quit.b = #False
  Repeat
  
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_CloseWindow : Quit = #True   
      Case #PB_Event_Gadget
        If EventGadget() = btnFermer
          CloseWindow(windowId)
        EndIf
    EndSelect
  Until Quit = #True
  
EndProcedure

; Ouvre l'ecran principal
windowId = OpenWindow(#PB_Any, 100, 100, 200, 30, "Test Thread")
If windowId
  btnAjout = ButtonGadget(#PB_Any, 0, 0, 200, 30, "Ajouter fenêtre enfant")
EndIf

; Boucle des évenement principales
Quit.b = #False
Repeat

  Event = WaitWindowEvent()
  Select Event
      
    Case #PB_Event_CloseWindow : Quit = #True  
    Case #PB_Event_Gadget
      If EventGadget() = btnAjout
        CreateThread(@CreateChildInterface(), 1)
      EndIf
  EndSelect
  
Until Quit = #True
Tu peux ajouter autant de fenêtre enfant que tu le souhaites, chacune est gérée séparément. Par contre, si tu fermes la fenêtre parent, toute les autres fenêtres sont détruites également.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: les thread

Message par dayvid »

merci, je vais vous donner des éxemple pour que vous puissiez m'aider :lol:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: les thread

Message par dayvid »

sa sert a quoi des mutex, semaphore etc !

je ne connais rien a sa moi, pourquoi un tread lancer ce termine et avent même d'éxécuter la procedure "procedure name is not a procedure pointeur" ou un truc comme sa quoi

moi je crée une fenêtre et tout ce qui va avec pour la gérer corectement, je met sa dans un thread et quand je le lance, rien, la procedure n'est même pas éxécuter et si elle est sa quitte
alors que la boucle n'est même pas terminer "enfin je croix"

j'ais besoin d'aide pour comprendre comment sa marche et des exemple aussi SVP
je sait utiliser plus ou moins les thread mais c'est loins d'être simple
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre