Bref pour conclure ce débat donc, je me contenterai de reprendre mon post du 28/11/01 qui explique en fait le contenu des technotes que j'avais cité en Francais en plus d'autres considérations.
Je conseilles à tout ceux qui ont "envie d'apprendre quelque chose de peu connu" de lire ce qui suit en détail.
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>> peut on dire "le multitache d'os9 est préemptif" ?
Non et tu le sais très bien. C'est une simplification abusive de mes propos. Ne me fais pas dire ce que je n'ai pas dit.
Sous OS X, Classic (ancien nom = Blue Box), tourne dans un process Unix, exactement comme une appli. Or OS X est préemptif, d'accord? Est-ce que pour autant Classic en lui-même est préemptif? Est-ce que tu peux lancer deux applis Classic en même temps? Est-ce si une appli Classic se bloque, les autres applis Classic continuent de tourner? La réponse est non bien sur. T'es toujours d'accord là?
Ben tu vois sous OS 9, c'est devenu pareil: le système tourne dans une unique tache préemptive (appellée "Blue task": tu reconnais rien, là?) gérée par le kernel en parallèle avec d'autres taches préemptives.
C'est ce qu'explique les technotes.
Alors pourquoi Apple a fait ça sous OS 9? Je suis quasi sur que c'est ce qui permet au système OS 9 standard de tourner dans un process Unix préemptif.
Je vais donc t'apprendre un autre truc : même sous OS X, si tu veux avoir plusieurs taches préemptives au sein de ton appli (je parle pas d'applis distinctes), c'est autant la galère que sous OS 9. Pourquoi? Parce que Carbon = Toolbox de MacOS Classic (essentiellement) et la ToolBox n'a jamais été concue pour travailler dans un environnement préemptif.
Alors comment est-ce possible que plusieurs applis Carbon fonctionnent en meme temps dans un environnement préemptif? Simplement parce que grâce à la mémoire protégée, chaque appli Carbon dispose de sa propre ToolBox!
Tu vois ce que je veux dire?
Par contre, si tu veux plusieurs taches coopératives, pas de problèmes sous OS 9 ou sous OS X.
Pour Cocoa, je sais pas.
Maintenant, sous OS 9, c'est tout à fait possible de mettre une partie du code de ton appli en multitache préemptif, et c'est alors le kernel qui gère son temps processeur. A une condition: qu'elle n'utilise pas la ToolBox. Donc en clair, tu peux pas mettre la partie interface graphique de ton appli dans une tache préemptive (QuickDraw va méchamment planter), par contre tu peux mettre des routines de calcul mathématique ou de compression par exemple.
Je vois d'ici ta question: "Alors pourquoi il n'y a quasiment pas d'applis qui utilisent ça? Ce serait vachement bien si Stuff-it pouvait faire sa compression dans une tache préemptive sous OS 9.". Là je ne peux te répondre que par une théorie (qui est aussi mon cas): les programmeurs MacOS Classic n'ont aucune expérience dans ce domaine de programmation n'ayant toujours fait que du coopératif, aussi ils préfèrent ne rien changer, d'autant plus que ca fonctionne plutot bien comme c'est.
<HR></BLOCKQUOTE>
C'est quand même intéressant de savoir que meme si maintenant c'est la mode du multitache préemptif sous X, il y avait des possibilités restreintes certes, mais fiables, sous OS 8/9 dispo depuis 98 environ, et que quasiment personne n'a utilisé...
Je conseilles à tout ceux qui ont "envie d'apprendre quelque chose de peu connu" de lire ce qui suit en détail.
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>> peut on dire "le multitache d'os9 est préemptif" ?
Non et tu le sais très bien. C'est une simplification abusive de mes propos. Ne me fais pas dire ce que je n'ai pas dit.
Sous OS X, Classic (ancien nom = Blue Box), tourne dans un process Unix, exactement comme une appli. Or OS X est préemptif, d'accord? Est-ce que pour autant Classic en lui-même est préemptif? Est-ce que tu peux lancer deux applis Classic en même temps? Est-ce si une appli Classic se bloque, les autres applis Classic continuent de tourner? La réponse est non bien sur. T'es toujours d'accord là?
Ben tu vois sous OS 9, c'est devenu pareil: le système tourne dans une unique tache préemptive (appellée "Blue task": tu reconnais rien, là?) gérée par le kernel en parallèle avec d'autres taches préemptives.
C'est ce qu'explique les technotes.
Alors pourquoi Apple a fait ça sous OS 9? Je suis quasi sur que c'est ce qui permet au système OS 9 standard de tourner dans un process Unix préemptif.
Je vais donc t'apprendre un autre truc : même sous OS X, si tu veux avoir plusieurs taches préemptives au sein de ton appli (je parle pas d'applis distinctes), c'est autant la galère que sous OS 9. Pourquoi? Parce que Carbon = Toolbox de MacOS Classic (essentiellement) et la ToolBox n'a jamais été concue pour travailler dans un environnement préemptif.
Alors comment est-ce possible que plusieurs applis Carbon fonctionnent en meme temps dans un environnement préemptif? Simplement parce que grâce à la mémoire protégée, chaque appli Carbon dispose de sa propre ToolBox!
Tu vois ce que je veux dire?
Par contre, si tu veux plusieurs taches coopératives, pas de problèmes sous OS 9 ou sous OS X.
Pour Cocoa, je sais pas.
Maintenant, sous OS 9, c'est tout à fait possible de mettre une partie du code de ton appli en multitache préemptif, et c'est alors le kernel qui gère son temps processeur. A une condition: qu'elle n'utilise pas la ToolBox. Donc en clair, tu peux pas mettre la partie interface graphique de ton appli dans une tache préemptive (QuickDraw va méchamment planter), par contre tu peux mettre des routines de calcul mathématique ou de compression par exemple.
Je vois d'ici ta question: "Alors pourquoi il n'y a quasiment pas d'applis qui utilisent ça? Ce serait vachement bien si Stuff-it pouvait faire sa compression dans une tache préemptive sous OS 9.". Là je ne peux te répondre que par une théorie (qui est aussi mon cas): les programmeurs MacOS Classic n'ont aucune expérience dans ce domaine de programmation n'ayant toujours fait que du coopératif, aussi ils préfèrent ne rien changer, d'autant plus que ca fonctionne plutot bien comme c'est.
<HR></BLOCKQUOTE>
C'est quand même intéressant de savoir que meme si maintenant c'est la mode du multitache préemptif sous X, il y avait des possibilités restreintes certes, mais fiables, sous OS 8/9 dispo depuis 98 environ, et que quasiment personne n'a utilisé...