Question

Comment puis-je utiliser les threads dans Ada95? Quelles fonctions puis-je utiliser pour créer, détruire, arrêtez et commencer?

Comment puis-je utiliser des sémaphores dans cette langue?

Était-ce utile?

La solution

terminologie de Ada pour un thread est une « tâche ». Ada n'a pas sémaphores (en tant que tel) construit directement dans la langue, mais googler quelque chose comme « sémaphores Ada » devrait mettre en place un bon nombre de hits. AdaPower.com , en particulier, a un peu sur la programmation simultanée en Ada (et, d'ailleurs, presque toutes sortes de programmation Ada).

Autres conseils

L'accès simultané est intégré dans la langue, vous avez donc la syntaxe Ada pour des tâches spécifiques (à savoir threads) et des objets protégés (à savoir qui sont plus puissants que les sémaphores / mutex / variables conditionnelles). Cela rend beaucoup plus facile (et moins sujets à des erreurs) programmation des applications multi-thread dans Ada que dans d'autres langages comme C / Java.

Il est recommandé de ne pas utiliser sémaphores Ada, des objets protégés sont beaucoup plus puissants (mais vous pouvez construire sémaphores facilement à l'aide d'objets protégés en cas de besoin).

Quelques petits exemples de syntaxe. Tâches (et des objets protégés) peuvent être statiques ...

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 créé dynamiquement

task type My_Task_Type(N : Natural);

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

...

T1 := new My_Task_Type(100);

abort T1;

Beaucoup moins bavard que d'autres langues (et plus maintenable)! Voir « nouvelle » et « abort » des mots-clés pour la gestion des tâches dynamiques, ainsi que d'autres paquets spécialisés comme Ada.Synchronous_Task_Control.

Les sémaphores doivent être « construite » (plutôt, fait sur mesure) en utilisant généralement 2 fichiers (extensions de fichiers .adb et .ads), sémaphores sophistiqués peuvent avoir besoin de 3 fichiers (voir « En même temps et la programmation en temps réel Ada » Alan Burns, et Andy Wellings). Il n'y a pas de fils, mais plutôt des tâches en Ada.

Pour la synchronisation en utilisant Ada sémaphores, vous pouvez voir un article sur mon blogspot! http://3chevrons.blogspot.com/2010/02/semaphores- en ada.html

Je reçois une impression que vous essayez de relier Ada à en C et concurrency / ou fils en Python. Cependant, Ada fait appel un peu différemment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top