Bonjour,
Pour ma culture personnelle je m'intéresse au Threads et aux Sémaphores, en fait j'ai plusieurs fonctions lancées par des threads et ne souhaite pas qu'elles s'exécutent en même temps (je veux être certain que lorsqu'une se lance, aucune des autres n'est en court).
J'ai essayé de traduire ça par un exemple avec 2 fonctions identiques lancées par threads qui écrivent l'heure dans 2 champs distincts.
Est-ce que ce code induit l'exécution d'une fonction à la fois, sans "chevauchement" ou je me plante ?
Code d'appel
Procédure 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SémaphoreCrée("ZoneCritique",1,0,partageAucun) ThreadExécute("Thread1",threadContexteGlobal,AfficheHeure) ThreadExécute("Thread2",threadContexteGlobal,AfficheHeure2)
Procédure 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PROCEDURE AfficheHeure() i est un entier =1 TANTQUE i=1 SI SémaphoreDébut("ZoneCritique") = Vrai ALORS SAI_Heure = HeureSys() SémaphoreFin("ZoneCritique") ThreadPause(1000) // endort le Thread 10 secondes FIN FIN
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PROCEDURE AfficheHeure2() i est un entier =1 TANTQUE i=1 SI SémaphoreDébut("ZoneCritique") = Vrai ALORS SAI_Heure2 = HeureSys() SémaphoreFin("ZoneCritique") ThreadPause(500) // endort le Thread 5 secondes FIN FIN
Partager