lulucu wrote:Voila quelques exemples :
Firefox : Partage le plugin Flash Player sur le processus "plugin-container.exe"
PunkBuster : Plusieurs processus PkbusterA.exe et PkbusterB.exe
Les antivirus : Notamment BitDefender qui compte au minimum 4 processus. (En version optimiser à mes taches)
Donc plus présent que ce que je pensais.
il y a de gros mélanges dans tes explications: le multi-thread et multi processus ne sont pas directement liés. pas besoin de faire du multi processus pour faire du multi-thread.
en fait, je pense que certains font du multi processus pour faire du multi-tâche, comme ton exemple de l'antivirus, l'avantage étant que chacun est totalement indépendant, mais ca n'est pas applicable a un jeux dont tous les éléments sont liés.
plus en détail, tes exemples:
- Firefox: l'exteriorisation de flash dans plugin-container n'a meme rien a voir avec du multitache, c'est une question de fiabilité et de sécurité: firefox déporte l'exécution des plugins dans ce processus comme ca ca crée une sandbox qui fait que au niveau sécurité le code est imperméable, et surtout au niveau stabilité, si ca plante au pire ca ferme le processus, mais firefox continue de fonctionner.
pour etre juste, le moteur de rendu html de firefox est lui-même multithreadé, mais pas dans le sens ou tu l'entendais, tout se passe dans l'unique exe.
- punkbuster, je n'utilise pas, je ne saurai dire, mais vu que c'est de l'anti triche, je dirai que ce n'est pas dur d'avoir plusieurs exe, chacun ayant une tâche de surveillance dans son coin.
- les antivirus: la aussi, Avoir plusieurs processus n'a rien à voir avec du vrai multithread: un antivirus a plusieurs tâches de surveillance INDEPENDANTES les unes des autres, il y a donc un service par type, qui peuvent être démarré et arreté independemment, comme dans windows, un service horloge, un service audio, etc... donc ce n'est pas DU TOUT du multi-threading, juste du découpage en services indépendant. (ce qui n'empeche pas non lus ces services d'etre potentiellement chacun multi-threadés)
dans le cas de cities xl, et d'un jeux en général, il y a processus qui s'exécute pour tout le jeux, dans un SEUL contexte, et il faut ici en effet du multi-thread pour tirer partie du multi-core. que ca n'aie pas été intégré dès le début, en effet c'est bien dommage, mais je pense que monte cristo étaient plutot concentré sur leur modèle online qui devait leur rapporter plus d'argent, mais maintenant que le moteur a été fait en monothread, je ne vois pas l'intérêt de ressasser en permanence ce problème.
pour conclure, il ne faut pas confondre multi-thread et multi-tache, ce sont 2 choses de niveaux de complexités bien différents, le premier étant très chaud a gérer, et devant être prévu dès la conception du moteur de jeux sous peine d'être impossible à ajouter plus tard.