2010-02-25 7 views
2

Quelqu'un peut-il me fournir des exemples de travail simples qui illustrent l'utilisation de pragmas en Ada 2005? Je comprends que les pragmas sont utilisés pour les processus prioritaires, juste que je n'ai pas rencontré d'exemples de travail!Utilisation de Pragmas Ada

Très apprécié!

+0

Hmmm. Est-ce que vous posez simplement des questions sur les pragmas qui traitent des tâches alors? Je peux probablement construire une plus utile réponse autour de cette ... –

Répondre

1

Une recherche de comp.lang.ada pour les discussions récentes au sujet de priorities a plusieurs exemples intéressants. This one semble particulièrement à propos de votre question.

Addendum: Deux autres sources exemplaires sont les Rationale for Ada 95 et Rationale for Ada 2005

+0

Merci trashgod, joli lien! – Arkapravo

+0

Excellent; c'est un groupe exemplaire, juste derrière le LRM. S'il vous plaît envisager d'accepter l'une des réponses et éventuellement en votant tout ce que vous avez trouvé utile. – trashgod

+0

Le dernier lien n'est vraiment pertinent que s'il fonctionne sous Linux.Sous Windows, vous n'avez pas besoin d'un administrateur pour changer de priorité (bien que vous en ayez besoin pour atteindre les niveaux de priorité supérieurs, ce qui pourrait rendre la machine inerte si vous passez en boucle). Bon à savoir cependant. –

2

Une Ada pragma est une caractéristique de langage qui permet d'ajuster ou 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 compilateurs peuvent également définir les leurs. Le sujet des pragmas couvre bien plus que le simple traitement des priorités, voici un list de pragmas standard et fournis par le fournisseur à vérifier.

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

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

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

    entry Start; 

end Prioritized_Task; 
+0

Salut Marc .... Je comptais faire un programme qui imprimerait 5'A pour 5'B et de 5'C pour (3 emplois, chacun avec un autre priorité) selon leur ordre de priorité donné par les pragmas, et changer les pragmas changerait leur ordre d'impression. Ce genre d'exemple montrerait peut-être l'utilité des pragmas. – Arkapravo

2

Comme avec beaucoup d'Ada, je pense que la meilleure réponse ici est vraiment consult the LRM. Le section on managing task priorities est en fait très lisible, pour une définition standard de langue de toute façon.

Notez que vous pouvez également set the priority of a task at runtime sans utilisation d'un pragma. Cela fait usage du paquet Ada.Dynamic_Priorities. C'est ce que je fais habituellement de nos jours, à moins que pour une raison étrange la priorité désirée ne soit connue au moment de la compilation, et cela ne me dérange pas de le coder en dur.

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 là que la plupart des bonnes choses sont documentées. Dans votre cas, vous serez probablement particulièrement intéressé par l'annexe en temps réel (Annexe D).

+0

Salut T.E.D, Merci pour votre réponse! ... Je suis passé par LRM et beaucoup d'autres choses ... il est dommage que je n'ai pas encore un «exemple de travail simple» qui illustre que les pragmas peuvent priorités un ensemble donné de tâches .... .. Je m'intéresse particulièrement aux pragmas car sinon, en utilisant des sémaphores, la programmation devient un peu lourde! ... Si vous avez un exemple de travail illustratif simple alors ce sera une grande aide pour moi! – Arkapravo

0

Eh 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);