Вопрос

Как я могу использовать потоки в Ada95?Какие функции я могу использовать для их создания, уничтожения, остановки и запуска?

Как я могу использовать семафоры на этом языке?

Это было полезно?

Решение

Терминология Ады для обозначения потока — это «задача».В Ada нет семафоров (как таковых), встроенных непосредственно в язык, но поиск в Google чего-то вроде «семафора Ады» должен привести к изрядному количеству совпадений. AdaPower.com, в частности, довольно много рассказывает о параллельном программировании на Ada (и, если уж на то пошло, почти обо всех видах программирования на Ada).

Другие советы

Параллелизм встроен в язык, поэтому у вас есть специальный синтаксис Ada для задач (т.потоки) и защищенные объекты (т.е.которые более мощны, чем семафоры/мьютексы/условные переменные).Это значительно упрощает (и снижает вероятность ошибок) программирование многопоточных приложений на Ada, чем на других языках, таких как C/Java.

Не рекомендуется использовать семафоры в Ada, защищенные объекты гораздо мощнее (но при необходимости вы можете легко создавать семафоры, используя защищенные объекты).

Несколько небольших примеров синтаксиса.Задачи (и защищаемые объекты) могут быть статическими...

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;

...или создается динамически

task type My_Task_Type(N : Natural);

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

...

T1 := new My_Task_Type(100);

abort T1;

Гораздо менее многословен, чем другие языки (и более удобен в обслуживании)!См. ключевые слова «new» и «abort» для управления динамическими задачами, а также другие специализированные пакеты, такие как Ada.Synchronous_Task_Control.

Семафоры должны быть «созданы» (скорее, созданы по индивидуальному заказу), обычно с использованием 2 файлов (расширения файлов .adb и .ads), для сложных семафоров может потребоваться 3 файла (см. «Параллельное программирование и программирование в реальном времени на Ada» Алан Бернс и Энди Веллингс). ).В Аде нет потоков, а есть задачи.

О синхронизации в Ada с использованием семафоров можно прочитать в статье в моем блоге! http://3chevrons.blogspot.com/2010/02/semaphores-in-ada.html

У меня такое ощущение, что вы пытаетесь связать Ada с параллелизмом в C и/или потоками в Python.Однако Ада привлекает несколько иначе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top