comp.lang.ada
 help / color / mirror / Atom feed
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.



  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