Pergunta

Como posso usar threads em Ada95?As funções que pode usar para criar, destruir, parar e iniciar-las?

Como posso usar semáforos neste idioma?

Foi útil?

Solução

A terminologia da ADA para um tópico é uma "tarefa". A ADA não tem semáforos (como tal) construídos diretamente no idioma, mas pesquisando no Google para algo como "Ada Semaphore" deve aumentar um número razoável de acertos. Adapower.com, em particular, tem um pouco de programação simultânea em ADA (e, nesse caso, quase todos os tipos de programação em ADA).

Outras dicas

A simultaneidade é criado para o idioma, então você tem específico Ada sintaxe para as tarefas (por exemplo,threads) e objetos protegidos (por exemplo,que são mais poderosos do que semáforos / mutexes / condicional de variáveis).Isso torna muito mais fácil (e menos propenso a erros) de programação multi-threaded apps na Ada do que em outras linguagens como C / Java.

Não é recomendado o uso de semáforos na Ada, objetos protegidos são muito mais poderosos (mas você pode criar semáforos facilmente usando objetos protegidos, se necessário).

Alguns pequenos exemplos de sintaxe.Tarefas (e protegido objetos) podem ser estáticos...

task My_Task;

task body My_Task is
begin
   -- Just print this to stdout and exit thread
   Ada.Text_IO.Put_Line("Hello, concurrent World!");
end;

...ou criados dinamicamente

task type My_Task_Type(N : Natural);

task body My_Task_Type(N : Natural) is ...

...

T1 := new My_Task_Type(100);

abort T1;

Muito menos detalhado do que outras línguas (e mais maintenable)!Consulte 'novo', e 'abort' palavras-chave para o gerenciamento dinâmico de tarefas, bem como outros pacotes especializados gosta de Ada.Synchronous_Task_Control.

Semáforos devem ser 'construídos' (em vez de personalizados) geralmente usando 2 arquivos (extensões de arquivos .adb e .ads), semáforos sofisticados podem precisar de 3 arquivos (consulte 'Programação simultânea e em tempo real em Ada' Alan Burns e Andy Wellings ). Não há tópicos, mas tarefas em Ada.

Para sincronização na ADA usando semáforos, você pode ver um artigo no meu blogspot! http://3chevrons.blogspot.com/2010/02/semaphores-in-ada.html

Sinto que você está tentando relacionar a ADA à simultaneidade em C e/ou threads em Python. No entanto, a ADA apela de maneira um pouco diferente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top