Bonjour à tous, merci pour ceux qui pourront m'apporter leur aide. J'ai un projet c++ à faire et je n'arrive pas à le faire (il me reste qu'10 jours pour le finir). Le sujet est :
"lorsque 2 tâches communiquent à travers un objet commun une erreur grave consiste à utiliser cet objet avant sa création. 2 tâches utilisant un objet commun doivent pouvoir se transmettre l'identification de l'objet à travers un catalogue. Lors de sa création chaque objet reçoit un nom qui est placé dans un catalogue général. Une tâche peut récupérer un pointeur sur l'objet en fournissant son nom au noyau. Dans le cas où l'objet demandé serait absent du catalogue la tâche demandeuse doit être bloquée jusqu'à la création effective de l'objet. Pour améliorer le temps de recherche dans le catalogue il faudra organisé judicieusement la liste."
Dans le noyau d'application (ce n'est pas un noyau système) il y a les objets semaphores, boites aux lettres, taches, drapeaux, reveil, file d'attente, ordonnanceur, ecran, clavier .... et d'autres encores. une premiere application de ce noyau a éte de creer le jeu des araignees dans lequel des araignees (qu'on a visualise par des etoiles *) qui sont des taches et ont la mission de manger des briques. Il y a des compteurs d'araignees et du temps... Le noyau ou son application doit être multitâches.
Voilà ce que j'ai fait pour mon sujet de catalogue: j'ai crée les classes "catalogue de tâches" et "catalogue de semaphore" pour le moment. Dans ces classes on trouve une liste chainee de tâche ou de semaphore. Il y a aussi une methode pour cataloguer l'objet crée en passant le pointeur "this" en parametre, dans cette methode on fera appel a une methode de la liste chainee "list" pour inserer un element qui est le pointeur de notre objet.
C'est dans le constructeur de la classe tâche et semaphore que je catalogue les objets en faisant appel à la méthode de catalogage de la classe catalogue tâche ou semaphore. J'ai auparavant inclus le fichier d'en-tête (.h et.cpp) de mon fichier catalogue.
Voilà où j'en suis; je n'ai presque rien fait et je ne sais plus ou aller. J'ai donc plusieurs questions à poser (j'espere que ce ne sera pas une bouteille jetée à la mer)
-dans le cahier des charges du sujet, on récupère l'identifiant de l'objet en passant son nom en parametre au noyau comment fait on cela ?
-Une fois que j'ai inserer un pointeur de l'objet dans la liste chainee, je ne saispas comment recuperer cet identificateur, quelle methode utiliser ?
-En fait en supposant qu'une tâche 1 crée une boite aux lettres, et une tâche 2 veut communiquer avec la tâche 1, comment fait elle pour connaître le nom de la boite aux lettres de la tâche 1 ? ou alors il faut donner un nom arbitraire comme "Bal1" et que la tache 1 doit cataloguer en donnant le pointeur et le nom "Bal1" et ainsi la tache 2 saura que si elle veut communiquer avec la tâche 1 elle devra chercher une bal de nom "Bal1". Ce qui est arbitraire. Mais dans ce cas comment faire pour cataloguer le nom et le faire correspondre avec le pointeur de son objet. Et surtout comment recuperer l'objet ?
-On m'a dit de creer une classe abstraite mère des autres classes de catalogue et qui se catalogue aussi; je ne vois pas du tout comment faire ? peut etre qu'il faut creer une classe abstraite mais qui soit mere des autres classes (boites, semaphore, taches...) et c'est celle-ci que l'on catalogue dans le constructeur. Ainsi toutes les classes filles qui font appel au constructeur de la classe mere seront catalogué. Est-ce bien cela ?
-Enfin, quelqu'un peut-il me proposer une idée de demo pour montrer que j'ai repondu au sujet, que les objets sont catalogues et qu'on est toujours multi-taches ?
Merci, à tous ceux qui auront la patience d'abord de lire et peut-etre de me repondre. J'ai vraiment besoin d'une aide.