Pergunta

Alguém pode me fornecer exemplos simples de trabalho que ilustrem o uso de pragmas no Ada 2005?Entendo que os pragmas estão acostumados a processos de prioridades, mas não encontrei exemplos práticos!

Muito apreciado !

Foi útil?

Solução

Uma pesquisa de comp.lang.ada Para discussões recentes sobre priorities tem vários exemplos interessantes. Este Parece particularmente aprovesso à sua pergunta.

Adendo: duas outras fontes exemplares são o Justificativa para Ada 95 e Justificativa para Ada 2005

Outras dicas

Um Ada Pragma é um recurso de idioma que permite ajustar ou ajustar o comportamento de um programa ADA. Vários Pragmas são definidos pelo padrão de idioma ADA, mas os fornecedores do compilador também podem definir o seu próprio.

O assunto de Pragmas cobre muito mais do que apenas prioridades do processo [TASKING], aqui está um Lista de Pragmas padrão e fornecidos por fornecedores para verificar.

O que exatamente você está tentando fazer com a ajuda de Pragmas? Definir prioridades de tarefas?

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

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

   entry Start;

end Prioritized_Task;

Como em grande parte da ADA, acho que a melhor resposta aqui é realmente Consulte o LRM. o Seção sobre gerenciamento de prioridades de tarefas é realmente muito legível, para uma definição padrão de idioma de qualquer maneira.

Observe que você também pode Defina a prioridade de uma tarefa em tempo de execução sem uso de um Pragma. Isso faz uso do pacote Ada.Dynamic_Priorities. É isso que normalmente faço hoje em dia, a menos que, por algum motivo estranho, a prioridade desejada seja conhecida no momento da compilação, e eu não me importo com codificação dura.

Eu sugiro que usuários avançados, como você, cutucam o LRM para ver o que todo o idioma fornece. Preste atenção especial aos anexos (as seções que começam com uma carta), pois é aí que a maioria das coisas boas está documentada. No seu caso, você provavelmente estará particularmente interessado no anexo em tempo real (anexo d).

Sim, vejo este usado frequentemente para calar o compilador sobre variáveis ​​não referenciadas em um procedimento:

pragma Unreferenced(Variable);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top