Bonjour à tous.
Merci Geo Trouvpatou pour l'exemple sur les mutex.
(se sont mes premieres tentatives sur les Thread/Mutex/Semaphore)
Dans les exemples cités et interressants, les procedures effectuent un nombre de boucles
à l'interieur et renvoient le resultat.
Mon utilisation des Thread, ferait plutot que la Procedure/Thread,
soit en fin d'une grosse boucle, effectue son traitement
et affiche une sorte de "Compteur" à chaque passage de Boucle .
Remise à jour du code,
Bon apparement, obligation de créer le Thread à chaque début de boucle Finale ?
Serais ce la bonne maniere ?
Code : Tout sélectionner
; ; Thread Dans Boucle // LinkedList
;DisableDebugger
Global a.l ,b.l,z.l,j.l
Global Total.l
Global col.l = 100
Global lignes.l = 100000
Global Dim TBL.l(col,lignes)
Global Controle.l = 100
;======================= Remplir Tableau TEST
For a = 1 To col
For b = 1 To lignes
TBL(a,b) = Random(1)
Next b
Next a
; ====================== Liste chainée de Longueur Aleatoire
Global NewList ADRESSE.l()
Global Colonne.l
Global Longueur.l
; Remplir les Adresses
Longueur = Random(lignes)
Debug "Longueur = " +Str(Longueur)
;
For z = 1 To Longueur
AddElement(ADRESSE())
ADRESSE() = Random(Longueur)
Next z
Debug "Taille Liste = " +Str(ListSize(ADRESSE()))
Debug "============================================="
;
; Procedure de Comptage Adresses Du tableau
;
Procedure Count(a)
;
ForEach ADRESSE()
Total + TBL(Colonne,ADRESSE()) ;
Next
;
EnableDebugger
;
;Debug " TRHEAD = " +Str(j) + " Colonne = " +Str(Colonne)
Debug " TRHEAD = " +Str(j) + " Colonne = "+Str(Colonne) +" TOTAL = " +Str(Total)
;
DisableDebugger
;
Total = 0
EndProcedure
;Ta = CreateThread(@Count(), a)
;
For j = 1 To 3000
;
Ta = CreateThread(@Count(), a)
;ResumeThread(Count)
Colonne.l = Random(99) +1
;EnableDebugger
;Debug " TRHEAD = " +Str(j) + " Colonne = " +Str(Colonne)
;EnableDebugger
WaitThread(Ta)
;
Next j
;
EnableDebugger
;
Debug "============================================="
Debug "Boucle Longueur = " +Str(j-1)
Debug "Longueur = " + Str(Longueur)
Debug "Taille Liste = " +Str(ListSize(ADRESSE()))
;
;