Pregunta

¿Cómo puedo utilizar hilos en Ada95? ¿Qué funciones puedo utilizar para crear, destruir, detener e iniciar ellos?

¿Cómo puedo usar semáforos en este idioma?

¿Fue útil?

Solución

terminología de Ada como un hilo es una "tarea". Ada no tiene semáforos (como tales) construidas directamente en el lenguaje, pero Google para algo así como "Ada semáforo" debería subir un buen número de éxitos. AdaPower.com , en particular, tiene un poco acerca de la programación concurrente en Ada (y, de hecho, casi todos los tipos de programación en Ada).

Otros consejos

La concurrencia está integrado en el lenguaje, por lo que tiene una sintaxis específica para las tareas de Ada (es decir, hilos) y los objetos protegidos (es decir, que son más poderosos que los semáforos / exclusiones mutuas / variables condicionales). Esto hace mucho más fácil (y menos propenso a errores) programar aplicaciones multi-hilo en Ada que en otros lenguajes como C / Java.

No es recomendable utilizar semáforos en Ada, objetos protegidos son mucho más potente (pero usted puede construir fácilmente utilizando semáforos objetos protegidos si es necesario).

Algunos pequeños ejemplos de sintaxis. (Tareas) y los bienes protegidos pueden 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;

... o creados de forma dinámica

task type My_Task_Type(N : Natural);

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

...

T1 := new My_Task_Type(100);

abort T1;

Mucho menos detallado que otros lenguajes (y más mantenible)! Ver 'nuevo', y 'abortar' palabras clave para la gestión de tareas dinámicas, así como otros paquetes especializados como Ada.Synchronous_Task_Control.

Los semáforos han de ser 'construida' (en lugar, por encargo) por lo general utilizando 2 archivos (extensiones de archivos y .adb .ads), semáforos sofisticados pueden necesitar 3 archivos (ver 'concurrente y en tiempo real Programación en Ada' Alan Burns y Andy Wellings). No hay hilos, sino más bien las tareas en Ada.

Para la sincronización en Ada utilizando semáforos, es posible que aparezca un artículo en mi blogspot! http://3chevrons.blogspot.com/2010/02/semaphores- en-ada.html

consigo una sensación de que usted está tratando de relacionar Ada a la concurrencia en C y / o hilos en Python. Sin embargo, Ada apela de manera algo diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top