Zeph (./29) :
(même dans un jeu, on martèle rarement les touches toutes les quelques millisecondes)
Toi, tu ne joues pas contre des Coréens à SC II

Zeph (./29) :
(même dans un jeu, on martèle rarement les touches toutes les quelques millisecondes)
Zeph (./29) :Heu… Je n'ai pas l'impression que tu comprennes comment ça doit fonctionner…
Je rejoins 0² contre les "while (se_passe_t_il_qqchose())", surtout quand comme ici les threads pourraient se permettre d'être en pause une grande majorité du temps (même dans un jeu, on martèle rarement les touches toutes les quelques millisecondes). Si le coût pour continuer à utiliser GetMessage c'est d'avoir une pauvre queue asynchrone pour transférer les messages à l'unique thread GUI, alors ça me semble être quand même raisonnable niveau quantité de code.
GoldenCrystal (./32) :Ben si, c'est aussi pour ça. Tu as déjà codé des applis qui doivent tourner sur des machines à faibles perfs et/ou sur batteries ? Ben dans ce cas tu gères le maximum de trucs en événementiel, et le but est que tes threads restent dans l'état "attente" (qui consomme très peu de CPU et d'énergie) tant qu'ils n'ont rien d'utile à faire.
Donc l'intérêt, ce n'est pas que le thread "ne branle rien"...
GoldenCrystal (./34) :Tu sais, même en restant dans le domaine des jeux, il existe aussi des portables... des subnotebooks ... des gens qui n'ont pas les moyens de se payer PC récent... des jeux qui ne nécessitent pas une config de malade...
Donc... Win32... sur un PC... Branché au secteur...
GoldenCrystal (./36) :Oui, d'ailleurs il y a quelques années, quand ton vieux PC monocore était une bonne config, il n'y avait pas de jeux c'est évident
Bah oui, et tu joues à quoi sur un netbook ou un vieux PC ? J'ai un petit indice : à rien, à part au démineur et au solitaire...
GoldenCrystal (./32) :
Heu… Je n'ai pas l'impression que tu comprennes comment ça doit fonctionner…
Y'a des trucs que tu peux pas faire sur le thread de rendu pendant que certains se passent sur le thread d'interface, et vice-versa, y'a aucune histoire de passage de message ou autre…Le thread UI *est* celui qui reçoit les messages de Windows (et pas l'inverse comme tu l'as écrit), c'est lui qui va éventuellement les foutre dans une file asynchrone qui sera lue par le thread de physique / mise à jour (qui n'a rien à voir avec le rendu !).
Zerosquare (./43) :Ben voyons, c'est vrai allons gâcher 500+ cycles d'un pauvre CPU à 1,5GHz pour exécuter séquentiellement dans un même processus des trucs qu'on aurait pu exécuter séquentiellement sans multitâches…
Parce que sous Linux y'a pas de contrôles vraiment natifs de toute façon #troll#
GC > tu me rappelles un collègue, qui considère tout ce qui date d'avant le Core 2 Duo comme de l'histoire médiévale, et qu'on ne peut quasiment pas faire de multithread sur un proc monocore...
Bizarrement si tu relis les posts yN de (allez soyons gentils) 2004, y'avait déjà des gens qui jouaient à plein de jeux qui tournent toujours parfaitementC'est vrai que si tu veux vivre dans le passé tu as une ludothèque quasi infinie. Ce n'est d'ailleurs pas exclu dans mon post, mais stop. Ça n'a vraiment plus rien à voir avec le sujet. C'est pas parce que tu es à court d'arguments qu'il faut partir dans tous les sens comme ça, on dirait Kevin…
Sérieux, sors un peu de ton .NETOuais, encore un truc sans rapport, supper ! T'es en forme ce soir
de tes processeurs à plein de cores et de tes CG qui font tourner qui font tourner quarante-douze millions de shaders, on n'a pas attendu ça pour faire des jeux et des applis gourmandes sur PC.T1 mais c'est l'hôpital qui se fout de la charité. Tu sais combien de core à mon Macbook ? Deux.
Et t'as l'air de considérer que l'optimisation en puissance consommée est marginaleNon absolument pas, je vois juste pas en quoi tu viens me faire chier sur un truc qui n'a aucun rapport.
mais c'est justement un point qui est activement étudié dans les nouveaux OS comme Windows 7 et 8.Et c'est très bien. Je n'ai jamais dit le contraire, je suis d'ailleurs content que Windows 8 consomme moins de RAM que Windows 7 et que OSX (même si sur le reste c'est une grosse bouse), mais arrête de t'éloigner sans-cesse du sujet pour attaquer sur des terrains vierges en me faisant porter des propos que je n'ai pas tenu !
Zeph (./44) :Qu'on soit clair je parle bien juste d'un rendu, et je n'ai jamais parlé d'un quelconque calcul. Tu ne prends donc pas en compte la mise à jour des positions des objets et les calcul physiques là dedans, hein ?
Tu parlais de jeu (cf. fin du ./14), et dans ce cas le thread qui calcule le rendu ne sera certainement pas celui qui reçois les messages, non.
Enfin libre à toi de faire comme ça et d'avoir des messages qui bloquent ton renduBah si tu fais un jeu classique sans barre de menu ni fenêtre, il n'y aura pas grand chose pour bloquer quoi que ce soit…
heu ... et tu vas jusqu'à prétendre que c'est ce que tu *cherches* comme comportement ?Non je prétends juste que c'est pas forcément anormal, ni même un défaut.
quand tu fais du réseau tu fais pareil, tu poll 150 fois par seconde dans le même thread que celui qui traite tes données, en espérant aller assez vite ?Je vois même pas le rapport…
Zerosquare (./46) :Tu traites des RAW de 16 Mpix toi aussi ?
retoucher des photos
faire de l'édition sonore, coder du traitement de signal en temps réel et scroller des pages web, mais je savais pas qu'il fallait au moins 4 cores pour ça monsieur le jugeOuais, j'ai clairement marqué que c'est totalement impossible dans mon post au dessus, ça me parait évident.
GoldenCrystal (./18) :Donc arrête de sortir encore des choses dans tous les sens.
C'est pas parce que ton code est paralléllisé que ta procédure de rendu le sera, elle… (En pratique d'ailleurs, ce n'est pas vraiment le cas, sauf peut-être pour certains jeux très récents (et gourmands) qui utilisent DirectX11)
GoldenCrystal (./57) :
Je dis juste que la boucle de jeu basique n'est pas débile et pas forcément moins puissante, et en tout cas plus simple à concevoir et utiliser qu'une boucle de rendu parallèle au thread d'UI.
Et la on me sort que je fais une boucle de polling infinie et que c'est mal (de toutes façons ce me paraît totalement évident que vos thread ne contiennent aucune boucle de polling...), puis que en fait nan mais le but du multithreading c'est de ne pas utiliser le CPU. (Perdu, le but c'est d'optimiser (ce qui peut vouloir dire *maximiser...) l'utilisation CPU et l'exécution de tâches d'une manière indépendante de l'autre. Ce qui n'est pas indispensable dans tous les cas...)
Et maintenant comme je dis qu'utiliser une boucle mixte message/rendu, ça veut forcement dire que je suis totalement opposé au multitâche. (C'est ballot mais bizarrement je prends mon pied à écrire du code parallèle lock-free...)
Alors après, c'est sûr que si pour toi "coder un jeu" c'est "coder un démineur", tu vas avoir de toutes façons du mal à tomber sur un problème, quelle que soit la solution que tu utilises, aussi pourrie qu'elle soit.