Ada_Ru форум

Обсуждение языка Ада

GNAT for Win "delay until" bug

Оставить новое сообщение

Сообщения

Maxim Reznik
GNAT for Win "delay until" bug
2006-07-24 11:00:33

Оказывается, если в винде настроить синхронизацию времени,

и запустить на сутки программку вида

 

loop

delay until Clock + 10.0;

GNAT.Calendar.Time_IO.Put_Time (Clock, "%H:%M:%S");

end loop;

 

То спустя некоторое время (у меня 10 часов) delay будет длиться

12 секунд, затем, еще через 10, 14 секунд, и т.д.

 

Происходит это от того, что GNAT использует для вычисления

задержки свой Monotonic_Clock, который начинает отставать от

системного Clock, когда системный пытается уследить за

системными часами, скорректированными синхронизатором

времени NTP.

 

Например при запуске программы Monotonic_Clock и Clock равны.

Затем, через десять часов системные часы уплывают на 2 секунды,

при следующем delay GNAT корректирует Clock (скачком, сразу на 2 секунды!!!) и разница между Monotonic_Clock и Clock будет 2 секунды.

При исполнении "delay until Clock + 10.0;" фактически вычисляется (Clock + 10.0) - Monotonic_Clock, получается 12.0, и программа

засыпает на 12 секунд вместо 10.

 

Подробнее можно посмотреть s-osprim.adb для Windows.

 

PS Баг репорт писать лениво...

 

--

Maxim Reznik

--- In ada_ru@yahoogroups.com, Maxim Reznik <yeo@...> wrote:

 

ïËÁÚÙ×ÁÅÔÓÑ, ÅÓÌÉ × ×ÉÎÄÅ ÎÁÓÔÒÏÉÔØ ÓÉÎÈÒÏÎÉÚÁÃÉÀ ×ÒÅÍÅÎÉ,

É ÚÁÐÕÓÔÉÔØ ÎÁ ÓÕÔËÉ ÐÒÏÇÒÁÍÍËÕ ×ÉÄÁ

 

loop

delay until Clock + 10.0;

GNAT.Calendar.Time_IO.Put_Time (Clock, "%H:%M:%S");

end loop;

 

ôÏ ÓÐÕÓÔÑ ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ (Õ ÍÅÎÑ 10 ÞÁÓÏ×) delay ÂÕÄÅÔ ÄÌÉÔØÓÑ

12 ÓÅËÕÎÄ, ÚÁÔÅÍ, ÅÝÅ ÞÅÒÅÚ 10, 14 ÓÅËÕÎÄ, É Ô.Ä.

 

íÎÏÇÏ×ÁÔÏ, ÎÏ ×ÐÏÌÎÅ ×ÏÚÍÏÖÎÏ. ñ ÉÚÍÅÒÑÌ Ë×ÁÒà (ÄÌÑ ÏÄÎÏÇÏ ÐÒÏÅËÔÁ Ó Airbus), ÒÅÚÕÌØÎÁÔ ÂÙÌ ÄÒÅÊÆ, × ÓÒÅÄÎÅÍ, 1ÍËÓ/Ó.

 

PS âÁÇ ÒÅÐÏÒÔ ÐÉÓÁÔØ ÌÅÎÉ×Ï...

 

üÔÏ ÎÅ bug, ÎÁÓËÏÌØËÏ Ñ ÚÎÁÀ, ÓÔÁÎÄÁÒÔ ÎÅ ÚÁÐÒÅÝÁÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÄÉÎ ÉÓÔÏÞÎÉË ×ÒÅÍÅÎÉ ÄÌÑ Calendar É Real_Time.

 

ëÒÏÍÅ ÔÏÇÏ, ÐÏÄ Windows, ÅÓÔØ ÏÄÎÁ ÔÏÎËÏÓÔØ. Perfromance counter, ËÏÔÏÒÙÊ ÎÁ×ÅÒÎÑËÁ ÉÓÐÏÌØÚÕÅÔ GNAT, ÎÅ ÍÏÖÅÔ ÂÙÔØ ÐÒÅÏÂÒÁÚÏ×ÁÎ ×

ÐÏÌÉÔÉÞÅÓËÏÅ ×ÒÅÍÑ (ÇÏÄ, ÍÅÓÑÃ, É.Ô.Ä.) ÂÅÚ ÓÕÝÅÓÔ×ÅÎÎÏÊ ÐÏÔÅÒÉ

ÔÏÞÎÏÓÔÉ, ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ, 1 ÉÌÉ 16 ÍÓ, ÔÏÞÎÏ ÎÅ ÐÏÍÎÀ. îÅ ÚÎÁÀ ËÁË ÔÁÍ GNAT, ÎÏ Ñ ÉÓÐÒÏÌØÚÕÀ ÓÔÁÔÉÓÔÉÞÅÓËÉÊ ÁÌÇÏÒÉÔÍ, ËÏÔÏÒÙÊ ÎÁËÁÐÌÉ×ÁÅÔ ÒÅÚÕÌØÔÁÔÙ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÊ Á ÐÏÔÏÍ ÕÓÒÅÄÎÑÅÔ ÉÈ, ÞÔÏÂÙ ÐÏÌÕÞÉÔØ

ÒÁÚÒÅÛÅÎÉÅ × ÍËÓ ÄÉÁÐÁÚÏÎÅ. ñÓÎÏ, ÞÔÏ ÜÔÏ ÎÉ Ë ÞÅÒÔÕ ÎÅ ÍÏÎÏÔÏÎÎÏÅ ×ÒÅÍÑ. ôÁË ÞÔÏ ÂÅÚ ÒÁÚ×ÅÄÅÎÉÑ Calendar É Real_Time, ÎÉÞÅÇÏ ÈÏÒÏÛÅÇÏ ÐÏÄ Windows ÏÖÉÄÁÔØ ÎÅÌØÚÑ.

kazakov1961 wrote:

 

--- In ada_ru@yahoogroups.com <mailto:ada_ru%40yahoogroups.com>, Maxim Reznik <yeo@...> wrote:

 

Оказывается, если в винде настроить синхронизацию времени,

и запустить на сутки программку вида

 

loop

delay until Clock + 10.0;

GNAT.Calendar.Time_IO.Put_Time (Clock, "%H:%M:%S");

end loop;

 

То спустя некоторое время (у меня 10 часов) delay будет длиться

12 секунд, затем, еще через 10, 14 секунд, и т.д.

 

Многовато, но вполне возможно. Я измерял кварц (для одного проекта с Airbus), резульнат был дрейф, в среднем, 1мкс/с.

 

PS Баг репорт писать лениво...

 

Это не bug, насколько я знаю, стандарт не запрещает использовать один источник времени для Calendar и Real_Time.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Как же не баг то, Если

delay until Clock + 10.0;

через 10 часов работы перескакивает на задержку на 12 секунд, через некоторое время на 14 секунд

потом мы наблюдали 16, 18 секунд, и потом сразу 29.35 секунды.

On Mon, Jul 24, 2006 at 12:19:08PM -0000, kazakov1961 wrote:

PS Баг репорт писать лениво...

 

Это не bug, насколько я знаю, стандарт не запрещает использовать один источник времени для Calendar и Real_Time.

 

 

Не понял. Как это не баг? Семантика delay_until_statement - задержать выполнение до заданного момента времени. Если GNAT хавает тип

Ada.Calendar.Time как параметр delay until, он обязан засыпать

до указанного момента, который я потом могу проверить используя

Clock из того-же пакета Ada.Calendar. Плюс-минус некоторая

погрешность, но не 2 секунды!

 

Если GNAT не может следавать этой семантике с типом Ada.Calendar.Time, то должен предоставить другой тип, пусть Monotonic_Time, но тогда он должен ругаться на использование Ada.Calendar.Time в delay until.

Или я не правильно понимаю RM?

 

Кроме того, под Windows, есть одна тонкость. Perfromance counter, который наверняка использует GNAT, не может быть преобразован в

 

Ну это детали реализации, которые меня, как юзера, в данный момент не очень интересуют.

 

--

Maxim Reznik

--- In ada_ru@yahoogroups.com, Maxim Reznik <yeo@...> wrote:

 

On Mon, Jul 24, 2006 at 12:19:08PM -0000, kazakov1961 wrote:

PS Баг репорт писать лениво...

 

Это не bug, насколько я знаю, стандарт не запрещает использовать один источник времени для Calendar и Real_Time.

 

 

Не понял. Как это не баг? Семантика delay_until_statement - задержать выполнение до заданного момента времени. Если GNAT хавает тип

Ada.Calendar.Time как параметр delay until, он обязан засыпать

до указанного момента, который я потом могу проверить используя

Clock из того-же пакета Ada.Calendar. Плюс-минус некоторая

погрешность, но не 2 секунды!

 

20 секунд - тебуемое разрешение типа Duration! (:-))

 

Если GNAT не может следавать этой семантике с типом Ada.Calendar.Time, то должен предоставить другой тип, пусть Monotonic_Time, но тогда он должен ругаться на использование Ada.Calendar.Time в delay until.

 

Почему? ARM 9.6(14) требует от delay until работы по часам из типа выражения. Ежели Clock был из Ada.Calendar, то delay until должен ждать по тем же часам. Сколько составляет разница D, в:

 

T1 := Clock;

T2 := T1 + 10.0;

delay until T2;

D := Clock - T2;

 

? Я так понял (если нет, то пардон), что Clock-T1 не очень-то 10.0, так никто ведь и не обещал, просили D близко к 0.0, на-те вам...

 

Вообще, со временем - бардак, тут я согласен. Вместо прыгучего

Ada.Calendar.Time должно было быть монотонное UTC время. В Ada 2005 весь маразм оставлен как есть.

kazakov1961 wrote:

 

>Почему? ARM 9.6(14) требует от delay until работы по часам из типа >выражения. Ежели Clock был из Ada.Calendar, то delay until должен >ждать по тем же часам. Сколько составляет разница D, в:

 

>T1 := Clock;

>T2 := T1 + 10.0;

>delay until T2;

>D := Clock - T2;

 

>? Я так понял (если нет, то пардон), что Clock-T1 не очень-то 10.0, >так никто ведь и не обещал, просили D близко к 0.0, на-те вам...

 

Мне кажется Дмитрий не понял. После 10 часов работы такого кода в цикле D станет около 2 секунд, и так будет еще примерно 10 часов,

после чего оно станет 12 секунд и так далее.

Не может RM допускать такого безобразия.

Здравствуйте, kazakov1961.

 

Вы писали 24 июля 2006 г., 18:42:20:

 

Вообще, со временем - бардак, тут я согласен. Вместо прыгучего

Ada.Calendar.Time должно было быть монотонное UTC время. В Ada 2005 весь маразм оставлен как есть.

 

Не бардак, а нормальная ситуация. UTC тоже нисколько не монотонное время. Там и високосные секунды есть и др. скачки времени. Так что два варианта или ешь что дают со скачками и соответствующими эффектами или формирую собственную шкалу времени и доверяй только ей. Лично я делаю смешанный вариант запуск по внешнему времени, а робота по внутреннему. Т.е. уже относительному время.

 

PS: В одном из устройств из-за этого ставили генератор с ошибкой

10^{-12}, что бы долго держать точное время.

 

--

С уважением,

Николай mailto:nmaznyov@...

--- In ada_ru@yahoogroups.com, Николай Мазнёв <nmaznyov@...> wrote:

 

Здравствуйте, kazakov1961.

 

Вы писали 24 июля 2006 г., 18:42:20:

 

Вообще, со временем - бардак, тут я согласен. Вместо прыгучего

Ada.Calendar.Time должно было быть монотонное UTC время. В Ada 2005 весь маразм оставлен как есть.

 

Не бардак, а нормальная ситуация. UTC тоже нисколько не монотонное время.

 

Монотонное, только в том смысле, что не прыгает назад, как

политическое время. Стандарт должен также ограничивать прыжки вперед, в разумных пределах. Секунда - слишком много.

 

Там и високосные секунды есть и др. скачки времени. Так что два

варианта или ешь что дают со скачками и соответствующими эффектами или формирую собственную шкалу времени и доверяй только ей. Лично я делаю смешанный вариант запуск по внешнему времени, а робота по внутреннему. Т.е. уже относительному время.

 

Тоже плохо. У меня системы состоят из нескольких удаленных машин, обменивающимеся данными. Некоторые данные - пишутся в лог. Все это может работать месяц и более без перезагрузки. Замечательный Annex E: Distributed Systems время даже не упоминает. Портируемого способа послать время через сетку вообще нет. Для того, чтобы получить UTC в Ада 2005, надо кувыркаться с зонами - бред! А если комп на самолете стоит, какая у него там зона? Бардак.

 

PS: В одном из устройств из-за этого ставили генератор с ошибкой 10^{-12}, что бы долго держать точное время.

 

Угу.

--- In ada_ru@yahoogroups.com, Dmitriy Anisimkov <anisimkov@...> wrote:

 

kazakov1961 wrote:

 

>Почему? ARM 9.6(14) требует от delay until работы по часам из типа >выражения. Ежели Clock был из Ada.Calendar, то delay until должен >ждать по тем же часам. Сколько составляет разница D, в:

 

>T1 := Clock;

>T2 := T1 + 10.0;

>delay until T2;

>D := Clock - T2;

 

>? Я так понял (если нет, то пардон), что Clock-T1 не очень-то 10.0, >так никто ведь и не обещал, просили D близко к 0.0, на-те вам...

 

Мне кажется Дмитрий не понял. После 10 часов работы такого кода в цикле D станет около 2 секунд, и так будет еще примерно 10 часов,

после чего оно станет 12 секунд и так далее.

Не может RM допускать такого безобразия.

 

Не должен.

 

Как насчет запустить:

 

with Ada.Calendar; use Ada.Calendar;

with Ada.Text_IO; use Ada.Text_IO;

 

procedure Clock_Test is

Started : Time := Clock;

T1, T2 : Time;

D : Duration;

begin

loop

T1 := Clock;

T2 := T1 + 10.0;

delay until T2;

D := Clock - T2;

Put_Line

( "Error:"

& Duration'Image (D)

& "s after"

& Integer'Image (Integer (Float (Clock - Started) / 3600.0)) & "h running"

);

end loop;

end Clock_Test;

 

денька на три, чтобы исключить разночтения.

kazakov1961 wrote:

 

>Мне кажется Дмитрий не понял. После 10 часов работы такого кода в цикле >D станет около 2 секунд, и так будет еще примерно 10 часов,

>после чего оно станет 12 секунд и так далее.

>Не может RM допускать такого безобразия.

 

 

 

>Не должен.

 

>Как насчет запустить:

 

>with Ada.Calendar; use Ada.Calendar;

>with Ada.Text_IO; use Ada.Text_IO;

 

>procedure Clock_Test is

Started : Time := Clock;

T1, T2 : Time;

D : Duration;

>begin

loop

T1 := Clock;

T2 := T1 + 10.0;

delay until T2;

D := Clock - T2;

Put_Line

( "Error:"

& Duration'Image (D)

& "s after"

& Integer'Image (Integer (Float (Clock - Started) / 3600.0))

& "h running"

);

end loop;

>end Clock_Test;

 

>денька на три, чтобы исключить разночтения.

 

 

Я уже рассказывал что такой цикл на испытываемом нами компьютере

примерно через 10 часов показывал скачкообразное увеличение длительности на 2 секунды.

12, 14, 16, 18 и так далее.

В общем то испытание уже прошли.

 

"Не должен." - это значит что RM не должен допускать такого безобразия ? Тогда я согласен.

 

Осталось послать репорт в AdaCore. Но наверное надо поточнее

сформулировать на каких компах такое бывает.

то есть позапускать вышеназванный тест на разных компах.

--- In ada_ru@yahoogroups.com, Dmitriy Anisimkov <anisimkov@...> wrote:

 

kazakov1961 wrote:

 

>Мне кажется Дмитрий не понял. После 10 часов работы такого кода в

цикле

>D станет около 2 секунд, и так будет еще примерно 10 часов,

>после чего оно станет 12 секунд и так далее.

>Не может RM допускать такого безобразия.

 

>Не должен.

 

>Как насчет запустить:

 

>with Ada.Calendar; use Ada.Calendar;

>with Ada.Text_IO; use Ada.Text_IO;

 

>procedure Clock_Test is

Started : Time := Clock;

T1, T2 : Time;

D : Duration;

>begin

loop

T1 := Clock;

T2 := T1 + 10.0;

delay until T2;

D := Clock - T2;

Put_Line

( "Error:"

& Duration'Image (D)

& "s after"

& Integer'Image (Integer (Float (Clock - Started) / 3600.0))

& "h running"

);

end loop;

>end Clock_Test;

 

>денька на три, чтобы исключить разночтения.

 

Я уже рассказывал что такой цикл на испытываемом нами компьютере примерно через 10 часов показывал скачкообразное увеличение длительности на 2 секунды.

12, 14, 16, 18 и так далее.

В общем то испытание уже прошли.

 

Я запустил это на Windows 2003 Server, три часа - полет нормальный. Больше чем на 1.5мс отклонений не было. Оставлю на выходные.

 

"Не должен." - это значит что RM не должен допускать такого безобразия ?

 

Но может! Вообще-то ARM D.9(9) требует документирования точности

delay, но никаких пределов не называет. Замечу, из-занудства, что точность здесь D (а никак не Clock - T1) и по часам использованным в delay until. (D.9(9.4))

 

AdaCore клялась и божилась, что она все приложения стандарта

реализовала. Так что, где-то данные должны быть. Хотя не думаю, что для задач реализованных на основе Windows-ких thread-ов. Если и есть что-нибудь, то для планировщика Ады, когда все задачи сидят в одном thread-е, одного процесса, а процесс крутится на real-time приоритете, с выгруженными драйверами, и отключенной клавиатурой...(:-)) Тот-же ARM требует, по понятным соображениям, документирования только для случая когда ждущая задача гарантированно получит процессор. А кто это может знать под Windows?

 

Осталось послать репорт в AdaCore. Но наверное надо поточнее

сформулировать на каких компах такое бывает.

то есть позапускать вышеназванный тест на разных компах.

 

Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

благополучно игнорировала. Не думаю, что они исправят там что-нибудь.

Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

благополучно игнорировала.

 

Это не так.

 

ВФ

On Fri, Jul 28, 2006 at 02:33:41PM -0000, kazakov1961 wrote:

--- In ada_ru@yahoogroups.com, Dmitriy Anisimkov <anisimkov@...> wrote:

Осталось послать репорт в AdaCore. Но наверное надо поточнее

сформулировать на каких компах такое бывает.

то есть позапускать вышеназванный тест на разных компах.

 

Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

благополучно игнорировала. Не думаю, что они исправят там что-нибудь.

 

Ну у нас здесь не только "обычные" неплатильщики, но и

"образовательные неплатильщики" (те кто по GAP, GNAT Academic Program). А еще есть "почетные неплатильщики", у которых GNAT Pro за особые заслуги. Может есть и платильщики, но они прячуться :)

 

--

Maxim Reznik

--- In ada_ru@yahoogroups.com, Vasiliy Fofanov <fofanov@...> wrote:

 

Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

благополучно игнорировала.

 

Это не так.

 

В жизни все не так, как на самом деле... (:-))

 

Впрочем, может кто из оптимистов сможет убедить их исправить вот это?

generic

type T is digits <>;

package A is

end A;

-----------------------------

with A;

generic

with package AA is new A (<>);

package B is

end B;

----------------------------

with B;

generic

with package BB is new B (<>);

package C is

X : BB.AA.T; -- So far OK

end C;

---------------------------

with A;

generic

with package AA is new A (<>);

package E is

end E;

--------------------------

with B, E;

generic

with package BB is new B (<>);

with package EE is new E (BB.AA);

package D is

X : BB.AA.T; -- "T" is not a visible entity of "AA" in GNAT GPL end D;

 

Очень уж гадкая штука, куча вещей не компилируется из-за нее.

 

И еще, попросите их, чтобы настраиваемые модули (generic body) не выдавали бы ошибок в уже скомпилированые телах во время настройки (instantiation), это же не С-шный препроцессор...

On Fri, Jul 28, 2006 at 04:27:48PM -0000, kazakov1961 wrote:

X : BB.AA.T; -- "T" is not a visible entity of "AA" in GNAT GPL

end D;

 

Очень уж гадкая штука, куча вещей не компилируется из-за нее.

 

 

Дык ведь компилиться. В gnat gpl 2006 и в gnat 3.15p.

 

--

Maxim Reznik

--- In ada_ru@yahoogroups.com, Vasiliy Fofanov <fofanov@...> wrote:

 

Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

благополучно игнорировала.

 

Это не так.

 

В жизни все не так, как на самом деле... (:-))

 

Впрочем, может кто из оптимистов сможет убедить их исправить вот это?

generic

type T is digits <>;

package A is

end A;

-----------------------------

with A;

generic

with package AA is new A (<>);

package B is

end B;

----------------------------

with B;

generic

with package BB is new B (<>);

package C is

X : BB.AA.T; -- So far OK

end C;

---------------------------

with A;

generic

with package AA is new A (<>);

package E is

end E;

--------------------------

with B, E;

generic

with package BB is new B (<>);

with package EE is new E (BB.AA);

package D is

X : BB.AA.T; -- "T" is not a visible entity of "AA" in GNAT GPL end D;

 

Очень уж гадкая штука, куча вещей не компилируется из-за нее.

 

И еще, попросите их, чтобы настраиваемые модули (generic body) не выдавали бы ошибок в уже скомпилированые телах во время настройки (instantiation), это же не С-шный препроцессор...

Впрочем, может кто из оптимистов сможет убедить их исправить вот это?

 

Вы баг репорт отсылали?

 

И еще, попросите их, чтобы настраиваемые модули (generic body) не выдавали бы ошибок в уже скомпилированые телах во время настройки (instantiation), это же не С-шный препроцессор...

 

Вы баг репорт отсылали?

 

ВФ

--- In ada_ru@yahoogroups.com, Maxim Reznik <yeo@...> wrote:

 

On Fri, Jul 28, 2006 at 04:27:48PM -0000, kazakov1961 wrote:

X : BB.AA.T; -- "T" is not a visible entity of "AA" in GNAT GPL

end D;

 

Очень уж гадкая штука, куча вещей не компилируется из-за нее.

 

Дык ведь компилиться. В gnat gpl 2006 и в gnat 3.15p.

 

GCC 2.4.0 20051125 не компилирует. 3.15p, верно, должен, он из всех имеет меньше всего проблем. GPL 2006 - не знаю, этот тест я на нем не запускал, потому что все остальное в нем не работает - компилятор вылетает. Выдает свою рамочку. Разбираться было лень, жду, когда

ребята с sourceforge (Мартин со товарищи) подлатают его, хоть

чуть-чуть, там посмотрю.

 

Ладно, такая вот задачка на расширение типов во-время вывода (должно выносить и 3.15p и GCC 2.4.0 20051125):

----------

with Ada.Finalization; use Ada.Finalization;

package Test1 is

type X (N : Natural) is

new Ada.Finalization.Limited_Controlled with private;

procedure Initialize (Obj : in out X);

private

type X (N : Natural) is

new Ada.Finalization.Limited_Controlled with

record

NS : String (1..N);

end record;

end Test1;

----------

package body Test1 is

procedure Initialize (Obj : in out X) is

begin

null;

end Initialize;

end Test1;

----------

package Test1.Test2 is

type XX (M : Natural; N : Natural) is new X with private;

procedure Initialize (Obj : in out XX);

private

type XX (M : Natural; N : Natural) is new X (N) with

record

MS : String (1..M);

end record;

end Test1.Test2;

----------

package body Test1.Test2 is

procedure Initialize (Obj : in out XX) is

begin

Initialize (X (Obj));

end Initialize;

end Test1.Test2;

----------

package Test1.Test2.Test3 is

type XXX is new XX (10, 20) with private;

procedure Initialize (Obj : in out XXX);

private

type XXX is new XX (10, 20) with null record;

end Test1.Test2.Test3;

----------

package body Test1.Test2.Test3 is

procedure Initialize (Obj : in out XXX) is

begin

Initialize (XX (Obj));

end Initialize;

end Test1.Test2.Test3;

 

На вопросы интересующихся, да, делал я в прошлом репорты, потом

бросил, за бессмысленностью оного занятия.

На вопросы интересующихся, да, делал я в прошлом репорты, потом

бросил, за бессмысленностью оного занятия.

 

Наверное вы неплохо конспирировались делая репорты, ни одного упоминания слова kazakov в нашей базе нет, если не считать свеженького сообщения по поводу gtkada. Не перечислите ли присвоенные вашим репортам номера? Буду очень благода.

 

ВФ

kazakov1961 wrote:

 

>--- In ada_ru@yahoogroups.com, Dmitriy Anisimkov <anisimkov@...> wrote:

 

>Осталось послать репорт в AdaCore. Но наверное надо поточнее

>сформулировать на каких компах такое бывает.

>то есть позапускать вышеназванный тест на разных компах.

 

 

 

>Ну, так AdaCore, до сих пор, любые репорты от неплательщиков

>благополучно игнорировала. Не думаю, что они исправят там что-нибудь.

 

Я думаю Вы преувеличиваете, не все репорты неплательщиков игнорируются, я думаю что значительная часть исполняется.

kazakov1961 wrote:

 

>Я запустил это на Windows 2003 Server, три часа - полет нормальный. >Больше чем на 1.5мс отклонений не было. Оставлю на выходные.

 

 

Я запустил на своем локальном Win XP

 

---------------------------------------

with Ada.Calendar;

with Ada.Text_IO;

with GNAT.Calendar.Time_IO;

 

procedure Test_Delay is

use Ada.Calendar;

use Ada.Text_IO;

File : File_Type;

Stamp : Ada.Calendar.Time;

 

procedure Log (Text : String) is

begin

Put_Line (Text);

Put_Line (File, Text);

end Log;

 

begin

Create

(File => File,

Name => "test-delay.log",

Mode => Out_File);

 

loop

Stamp := Clock;

delay until Stamp + 10.0;

Log (Duration'Image (Clock - Stamp) & GNAT.Calendar.Time_IO.Image (Stamp, " %y-%m-%d %T.%i"));

Stamp := Clock;

delay 10.0;

Log (Duration'Image (Clock - Stamp));

end loop;

end Test_Delay;

-------------------------------

 

и после ночи работы вижу 12 там где должно быть 10

 

12.014979558 06-07-29 13:27:10.997

10.015027050

12.014923126 06-07-29 13:27:33.027

10.004028724

12.004843353 06-07-29 13:27:55.051

Новое сообщение:
Страницы: 1 2 3

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти