From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: RFC: Prototype for a user threading library in Ada
Date: Thu, 7 Jul 2016 19:03:36 -0500
Date: 2016-07-07T19:03:36-05:00 [thread overview]
Message-ID: <nlmqkl$bip$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: du69ugF3631U1@mid.individual.net
"Niklas Holsti" <niklas.holsti@tidorum.invalid> wrote in message
news:du69ugF3631U1@mid.individual.net...
> On 16-07-07 03:32 , Randy Brukardt wrote:
>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
>> news:nliir0$1a7l$1@gioia.aioe.org...
>>> On 05/07/2016 23:53, Randy Brukardt wrote:
>> ...
>>>> Nothing in the core language of Ada requires tasks to be pre-emptive.
>>>
>>> Some applications rely on time sharing and most do on close to instant
>>> switching to a task of higher priority.
>>
>> Priorities are evil and almost always used poorly, that is to do
>> something
>> that should be accomplished explicitly with locking or the like. No
>> system
>> I'm contemplating has any priorities.
>
> Are you not contemplating any real-time systems? If you are, what do you
> use instead of priorites, to ensure that urgent activities are done in
> time?
I'm not contemplating hard-real-time systems (under 10ms response time). I
don't think it is possible to create implementation-independent code for
those sorts of deadlines, and as such it doesn't really matter from a
language perspective how that's done (it won't be portable in any case).
I'm unconvinced that the way to ensure that "urgent activies" are done is
some sort of magic (and priorities are essentially magic). I'd rather make
sure that no task is hogging the system, and avoid overcommitting. That
usually happens naturally, and in the unusual case where it doesn't, there's
almost always someplace where adding a synchronization point (usually a
"Yield" aka delay 0.0) fixes the problem. [Most of the cases have involved
I/O, and the system I've been discussing with Dmitry would pretty much have
eliminated that. We had considered adding synchronization points to loops
many years back, but couldn't figure out how to do that cheaply enough to be
useful (the MS-DOS clock was much too expensive) - that could be revisited
if necessary].
It might actually be possible to make this system work with some form of
priorities (we have them in our task supervisor, we just have the range of
priorities set to 1 so that preemption doesn't come into play). That would
certainly require the compiler to break loop and call cycles with
synchronization points, and whether that could be done without visible
performance impact is definitely TBD. (And I don't want to make my head hurt
worrying about priorities when just getting task mapping to work is complex
enough.)
Randy.
next prev parent reply other threads:[~2016-07-08 0:03 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-17 9:44 RFC: Prototype for a user threading library in Ada Hadrien Grasland
2016-06-17 16:18 ` Niklas Holsti
2016-06-17 16:46 ` Dmitry A. Kazakov
2016-06-18 8:16 ` Hadrien Grasland
2016-06-18 8:47 ` Dmitry A. Kazakov
2016-06-18 9:17 ` Hadrien Grasland
2016-06-18 11:53 ` Dmitry A. Kazakov
2016-06-20 8:23 ` Hadrien Grasland
2016-06-20 9:22 ` Dmitry A. Kazakov
2016-06-23 1:42 ` Randy Brukardt
2016-06-23 8:39 ` Dmitry A. Kazakov
2016-06-23 22:12 ` Randy Brukardt
2016-06-24 7:34 ` Dmitry A. Kazakov
2016-06-24 23:00 ` Randy Brukardt
2016-06-25 7:11 ` Dmitry A. Kazakov
2016-06-26 2:02 ` rieachus
2016-06-26 6:26 ` Dmitry A. Kazakov
2016-06-24 0:38 ` rieachus
2016-06-25 6:28 ` Dmitry A. Kazakov
2016-06-26 1:34 ` rieachus
2016-06-26 3:21 ` Randy Brukardt
2016-06-26 6:15 ` Dmitry A. Kazakov
2016-06-28 20:44 ` Anh Vo
2016-07-02 4:13 ` Randy Brukardt
2016-07-02 10:25 ` Dmitry A. Kazakov
2016-07-05 21:53 ` Randy Brukardt
2016-07-06 9:25 ` Dmitry A. Kazakov
2016-07-07 0:32 ` Randy Brukardt
2016-07-07 6:08 ` Niklas Holsti
2016-07-08 0:03 ` Randy Brukardt [this message]
2016-07-08 7:32 ` Dmitry A. Kazakov
2016-07-11 19:40 ` Randy Brukardt
2016-07-12 8:37 ` Dmitry A. Kazakov
2016-07-12 21:31 ` Randy Brukardt
2016-07-08 20:17 ` Niklas Holsti
2016-06-24 21:06 ` Hadrien Grasland
2016-06-26 3:09 ` Randy Brukardt
2016-06-26 6:41 ` Dmitry A. Kazakov
2016-07-02 4:21 ` Randy Brukardt
2016-07-02 10:33 ` Dmitry A. Kazakov
2016-07-05 21:24 ` Randy Brukardt
2016-07-06 13:46 ` Dmitry A. Kazakov
2016-07-07 1:00 ` Randy Brukardt
2016-07-07 14:23 ` Dmitry A. Kazakov
2016-07-07 23:43 ` Randy Brukardt
2016-07-08 8:23 ` Dmitry A. Kazakov
2016-07-11 19:44 ` Randy Brukardt
2016-06-26 9:09 ` Hadrien Grasland
2016-07-02 4:36 ` Randy Brukardt
2016-07-02 5:30 ` Simon Wright
2016-07-05 21:29 ` Randy Brukardt
2016-07-02 11:13 ` Hadrien Grasland
2016-07-02 13:18 ` Dmitry A. Kazakov
2016-07-02 16:49 ` Hadrien Grasland
2016-07-02 21:33 ` Niklas Holsti
2016-07-03 20:56 ` Hadrien Grasland
2016-07-02 17:26 ` Niklas Holsti
2016-07-02 21:14 ` Niklas Holsti
2016-07-03 7:42 ` Hadrien Grasland
2016-07-03 8:39 ` Dmitry A. Kazakov
2016-07-03 21:15 ` Hadrien Grasland
2016-07-04 7:44 ` Dmitry A. Kazakov
2016-07-05 21:38 ` Randy Brukardt
2016-06-21 2:40 ` rieachus
2016-06-21 7:34 ` Dmitry A. Kazakov
2016-06-18 7:56 ` Hadrien Grasland
2016-06-18 8:33 ` Hadrien Grasland
2016-06-18 11:38 ` Hadrien Grasland
2016-06-18 13:17 ` Niklas Holsti
2016-06-18 16:27 ` Jeffrey R. Carter
2016-06-20 8:42 ` Hadrien Grasland
2016-07-10 0:45 ` rieachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox