Я новичок в языке программирования Ada и работаю над параллельным программированием, но у меня проблема с одной реализацией. Это может быть очень фиктивный вопрос. Код следующий:
type status is array(1..6) of boolean; --boolean values for each track
track_available :status:=(others=>true); --true if track is available
protected track_handler is
entry track_req(n:in track_part_type); --n is track number
entry track_rel(n:in track_part_type); --n is track number
end track_handler;
protected body track_handler is
--implement entries
entry track_req(n: in track_part_type) when track_available(n) is --here where the error occurs
begin
req(n);
end track_req;
entry track_rel(n: in track_part_type) when track_available(n) is
begin
rel(n);
end track_rel;
end track_handler;
procedure req(nr : track_part_type) is
begin
--null;
track_available(nr):=false;
end req;
procedure rel(nr : track_part_type) is
begin
--null;
track_available(nr):=true;
end rel;
Здесь я получаю ошибку компиляции для оператора «when track_available (n)», в котором говорится, что «n не определено». Я думаю, что переменная n выходит за рамки, но мне также нужно проверить, является ли n-й индекс массива истинным или ложным. Как я могу решить эту проблему?
Спасибо.