comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: RFC: Prototype for a user threading library in Ada
Date: Fri, 8 Jul 2016 09:32:55 +0200
Date: 2016-07-08T09:32:55+02:00	[thread overview]
Message-ID: <nlnl0b$93q$1@gioia.aioe.org> (raw)
In-Reply-To: nlmqkl$bip$1@franka.jacob-sparre.dk

On 08/07/2016 02:03, Randy Brukardt wrote:
> "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).

Some of our customers have 0.2ms response time requirement and that not 
just local but over the network.

> 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 don't see why. Any reasonable implementation would do. An 
implementation that does not preempt lower priority tasks is not 
reasonable. If you wanted to push the argument you would end up with 
disabling hardware interrupts.

> 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.

No it does not and it is a *very* bad design, because it distributes 
making the decision to switch to the parts of the software which must 
know nothing about the reason when switching is necessary. E.g. that a 
task solving some differential equation decides whether to switch to the 
keyboard interrupt handler. That belongs to the keyboard driver, not to 
the equation solver.

Yield is a premature optimization of worst kind and I bet it is highly 
inefficient comparing to preemptive scheduling on any modern hardware. 
It is just like arguing for return codes over exceptions.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2016-07-08  7:32 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
2016-07-08  7:32                                 ` Dmitry A. Kazakov [this message]
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