Domanda

Come posso utilizzare le discussioni in Ada95? Quali funzioni posso utilizzare per creare, distruggere, arrestare e avviare li?

Come posso usare i semafori in questa lingua?

È stato utile?

Soluzione

la terminologia di Ada per un thread è un "compito". Ada non ha semafori (in quanto tale) incorporati direttamente nella lingua, ma Googling per qualcosa come "Ada semaforo" dovrebbe alzare un discreto numero di colpi. AdaPower.com , in particolare, ha un bel po 'di programmazione concorrente in Ada (e, del resto, quasi tutti i tipi di programmazione in Ada).

Altri suggerimenti

La concorrenza è incorporato nella lingua, in modo da avere la sintassi specifica per le attività di Ada (vale a dire le discussioni) e oggetti protetti (vale a dire che sono più potenti di semafori / mutex / variabili condizionali). Questo rende molto più semplice (e meno soggetto a errori) la programmazione di applicazioni multi-threaded a Ada che in altri linguaggi come C / Java.

Non è raccomandato l'uso di semafori in Ada, oggetti protetti sono molto più potenti (ma si può costruire semafori facilmente utilizzando oggetti protetti se necessario).

Alcuni piccoli esempi di sintassi. Compiti (e oggetti protetti) possono essere statici ...

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 creati dinamicamente

task type My_Task_Type(N : Natural);

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

...

T1 := new My_Task_Type(100);

abort T1;

Molto meno prolissa rispetto ad altre lingue (e più maintenable)! Vedere 'nuovo', e 'interrompere' parole chiave per gestire le attività dinamiche, così come altri pacchetti specializzati come Ada.Synchronous_Task_Control.

I semafori devono essere 'costruiti' (anzi, su misura) di solito con 2 file (file estensioni .adb e .ads), semafori sofisticati possono avere bisogno di 3 file (Vedi 'concorrente e in tempo reale di programmazione in Ada' Alan Burns e Andy Wellings). Non ci sono discussioni, ma piuttosto le attività di Ada.

Per la sincronizzazione in Ada con i semafori, è possibile vedere un articolo sul mio blogspot! http://3chevrons.blogspot.com/2010/02/semaphores- in-ada.html

ho una sensazione che si sta tentando di mettere in relazione Ada a concorrenza in C e / o thread in Python. Tuttavia, Ada appello un po 'diverso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top