From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: border2.nntp.dca1.giganews.com!nntp.giganews.com!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: Ravenscar vs selective wait Date: Tue, 24 Mar 2015 06:48:27 +0000 Organization: A noiseless patient Spider Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="639fc80d983459c1c824f7cd3788af8d"; logging-data="16601"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+RN9UipIP51BZTQTzYvZdd+rc32XexZ6s=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (darwin) Cancel-Lock: sha1:heMcaCnllU2ywem1ap5kYv5LvjU= sha1:TMMHv71DXmRy9R4PtgFsfk6SBPk= Xref: number.nntp.giganews.com comp.lang.ada:192535 Date: 2015-03-24T06:48:27+00:00 List-Id: Simon Wright writes: > Is it possible to construct an analog of the selective wait using the > Ravenscar profile? > > Turn_On_The_Lamp; > Next := Clock + Milliseconds (500); > select > accept Reset do > Next := Clock + Milliseconds (500); > end Reset; > or > delay until Next; > Turn_Off_The_Lamp; > end select; This is rather simplified from what I want to achieve, and I can think of an ugly solution for it. Turn_On_The_Lamp; Next := Clock + Milliseconds (500); -- Next is a shared variable loop delay until Next; if Next <= Clock then exit; else -- something else in the program has updated Next end if; end loop; Turn_Off_The_Lamp; But what if I need the next wake-up to be *earlier*?