Как использовать потоки в Ada95? Какие функции я могу использовать для создания, уничтожения, остановки и запуска их?Нитки и семафоры в Ada95
Как использовать семафоры на этом языке?
Как использовать потоки в Ada95? Какие функции я могу использовать для создания, уничтожения, остановки и запуска их?Нитки и семафоры в Ada95
Как использовать семафоры на этом языке?
Термин «Ада» для потока - это «задача». У Ada нет семафоров (как таковых), встроенных непосредственно в язык, но Googling для чего-то вроде «семафора Ada» должен появиться в большом количестве хитов. 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;
Гораздо менее многословным, чем в других языках (и более maintenable)! Смотрите ключевые слова «новый» и «прервать» для управления динамическими задачами, а также другие специализированные пакеты, такие как Ada.Synchronous_Task_Control.
Семафоры должны быть «сконструированы» (скорее, на заказ), обычно используя 2 файла (расширения файлов .adb и .ads), сложным семафорам может потребоваться 3 файла (см. «Параллельное и программирование в реальном времени в Ada» Alan Бернс и Энди Веллингс). В Аде нет потоков, а скорее задач.
Для синхронизации в Ada с помощью семафоров вы можете увидеть статью о моем блоге! http://3chevrons.blogspot.com/2010/02/semaphores-in-ada.html
Я чувствую, что вы пытаетесь связать Ada с параллелизмом в C и/или потоках в Python. Однако Ада обращается несколько иначе.
Почему Ada95? ....... –
Задача, примерно аналогичная потоку, является основной особенностью Ada и была с самого начала. Если вы планируете программировать в Ada, особенно в параллельном программировании, вы будете намного успешнее, сначала ознакомившись с его философией дизайна и возможностями, а не преследуя «Как мне сделать функцию языка X в Ada?» подход. (Не было совершено преступления, если у вас есть опыт работы с Ada, но только не с задачами :-) В Интернете нет недостатка ресурсов, таких как «Ada Distilled», Ada wikibook, AdaPower и т. Д. (Проверьте внешний ссылки из wikibook). –
Я не переживаю. Прямо сейчас мне нужно написать параллельную программу, чтобы мои классы были завершены, поэтому у меня много времени :) – szaman