Priorité donné à un programme : possible dans le code ?

Gandahar

Membre confirmé
26 Octobre 2005
28
0
Bonjour,

Je continue à migrer un jeu d'OS9 à OSX et je me heurte maintenant à un problème de rapidité de traitement.

Pour le moment, j'anime un champs d'étoiles derrière les baies vitrées de mon vaisseau spatial et je ne rencontre pas d'autres difficultés que la vitesse d'exécution des animations.

Avec les mêmes instructions sous OS9, l'animation est deux fois plus rapide que sous OSX.
Entre les deux programmes, il n'y a que deux différences :
1- En OS9, j'utilise Quickdraw au lieu de SDL.
2- en OS9, je peux mettre un 'Sleep Time' dans la boucle "WaitNextEvent", ce qui n'est apparemment pas possible sous OSX.

Savez-vous s'il y a un paramètre quelque part qui permettrait d'augmenter la priorité d'un programme directement dans le code, sans passer par la commande Unix 'nice' ?

A priori, lorsqu'on joue on n'a pas besoin de laisser du temps à l'ordinateur pour qu'il fasse autre chose. Lorsqu'il a la main, mon nouveau programme est beaucoup plus rapide que l'ancien pour afficher chaque écran, mais l'OS il donne la main beaucoup moins souvent qu'avant.
 
https://github.com/cucurbita/inutero/blob/master/cucurbitaos-100/CAOSThread.h

cherche pour la fonction que j'ai appele
__CAOSSleepCurrentThreadId

si tu n'est pas trop imbecile tu commenceras a lire
les docs a propos de ces fonctions et a apprendre les threads, ton main
thread est celui de l'UI c'est sur que tu dois laisser une chance aux autres
threads de runner mais tout ceci depend aussi de ton nombre
de proc et l'architecture, et certainement ne pas faire tes calculs dans le main thread

regarde aussi mon looperlock a propos du concept of CPU PAUSE/interrupts

je n'ai pas encore implementé les loopers et leurs messages queue c'est le concept qu'il te manque.

IPC/MUTEX/SEM/YIELD
 
Bonsoir,

Je vais prendre le temps d'étudier tout ça. Je te remercie beaucoup pour ta réponse.
J'essaierai aussi de poster une petite démo sur Youtube pour vous présenter mon projet en cours.
 
Comme promis, voici le tout début de la reprogrammation sous OSX :
http://www.youtube.com/watch?v=3zYQf42M2Po
La qualité de la vidéo est médiocre car c'est du DIVX.

Tout est en 3D pré-calculée (conçu en 3D, placé dans des fichiers images, puis géré en 2D par le logiciel).

En résumé, vous avez un écran de titre, un écran d'options, le pont de commandement principal et pour l'instant, un seul autre écran de reprogrammé, celui de la cargaison (La démo ne montre que peu de soutes disponibles pour les marchandises car le vaisseau est encore de petite taille).