Question

Quelqu'un peut-il me fournir des exemples de travail simples qui illustrent l'utilisation de pragmas en Ada 2005? Je comprends que pragmas sont utilisés pour les processus de priorités, juste que je ne suis pas venu à travers des exemples de travail!

Très apprécié!

Était-ce utile?

La solution

A la recherche de comp.lang.ada pour les discussions récentes sur priorities a plusieurs exemples intéressants. Celui-ci semble particulièrement pertinente à votre question.

Addendum: Deux autres sources exemplaires sont les Raison d'être Ada 95 et Raison d'être Ada 2005

Autres conseils

Un pragma Ada est une fonctionnalité de langage qui permet de régler ou d'affiner le comportement d'un programme Ada. Un certain nombre de pragmas sont définis par la norme de langage Ada, mais les fournisseurs de compilateur peut également définir leur propre.

Le sujet de pragma couvre bien plus que les priorités processus [tâches], voici un de pragmas standard et fourni fournisseurs à vérifier.

Qu'est-ce que vous essayez de faire exactement à l'aide de pragma? Définir les priorités de travail?

-- Not compile checked:
with System; use System;

task Prioritized_Task is
   pragma Priority(System.Default_Priority + 1);

   entry Start;

end Prioritized_Task;

Comme avec beaucoup d'Ada, je pense que la meilleure réponse ici est vraiment sur la gestion des priorités de travail est en fait très lisible , pour une définition standard de la langue de toute façon.

Notez que vous pouvez également définir la priorité d'une tâche à l'exécution sans utilisation d'un pragma. Cela rend l'utilisation du paquet Ada.Dynamic_Priorities. Voilà ce que je généralement faire ces jours-ci, à moins que pour une raison bizarre la priorité voulue est connue au moment de la compilation, et je ne me dérange pas coder en dur il.

Je suggère fortement que les utilisateurs avancés tels que vous percez à travers le LRM pour voir ce que toute la langue que vous fournit. Portez une attention particulière aux annexes (les sections commençant par une lettre), car c'est où la plupart des bonnes choses est documentée. Dans votre cas, vous serez probablement intéressé en particulier dans l'annexe en temps réel (annexe D).

Oui, je vois celui utilisé souvent pour fermer le compilateur en place sur les variables non référencées dans une procédure:

pragma Unreferenced(Variable);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top