-
Question sur les threads
Bonjour,
J'ai réalisé une application de type producteur-consommateur qui me laisse perplexe.
J'ai la fâcheuse impression que l'ordonnancement des threads (de la JVM ? de Windows ?) est basé sur un algorithme FIFO dans la mesure ou l'ordre d'exécution des threads est le même pendant tout le lancement de l'application.
Par ailleurs, tous les threads consommateurs et producteurs ont la même priorité, celle par défaut et je tourne sous Windows XP.
Est ce normal ?
Merci par avance de tout avis sur la question
-
Tu as combien de threads?
A priori, l'ordre est indéterminé, donc ça peut être n'importe quoi, pourquoi pas FIFO, LIFO, autre...
-
une dizaine. C'est du fifo sans le vouloir :oops:
Edit :
A un moment, j'ai utilisé la méthode synchronized{object o} .
J'ai testé sans et ca enleve cette ordonancement de type fifo.
Par contre je voulais que l'objet reste vérouillé pendant le déroulement de l'opération.
Donc ca ne me satisfait que moyennement
Merci
-
Je ne comprends pas très bien en quoi le Fifo te gène ?...
Tu penses, semble-t-il, que les threads devraient tous se dérouler dans n'importe quel ordre et, comme tu as reconnu un ordre, cela te dérange. (tu serais plus intelligent que la machine, finalement, ce qui est bien :D )
Mais la règle avec les threads est que l'on ne peut pas présumer de leur ordre. Ils ont certainement un ordre, mais on ne doit pas s'appuyer dessus pour concevoir les programmes.
Donc l'ordre Fifo, c'est bien, mais cela ne sert à rien.
Certes il y a peut être un ennui quelque part dans ton logiciel, mais, sur ce que tu nous dis, je ne vois rien d'anormal.
Moi aussi j'ai souvent constaté que, sur une même machine, l'ordonnancement des threads se déroulait de la même manière d'une exécution sur l'autre. Mais quelques fois, pour une raison inconnue, ça change.