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: Sat, 25 Jun 2016 09:11:41 +0200
Date: 2016-06-25T09:11:41+02:00	[thread overview]
Message-ID: <nklarp$1df1$1@gioia.aioe.org> (raw)
In-Reply-To: nkke2h$cvf$1@franka.jacob-sparre.dk

On 2016-06-25 01:00, Randy Brukardt wrote:
> Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:nkinr0$1h8t$1@gioia.aioe.org...
>> On 24/06/2016 00:12, Randy Brukardt wrote:
>>
>>> That wasn't my question; I'm wondering the motivation for these features
>>> in terms of parallelization.
>>
>> Because fine-grained (tightly coupled) parallelism is dead on arrival if
>> you use synchronous exchange. You cannot wait for a response without
>> imposing huge accumulating latencies.
>
> Parallelism, in general, is DOA if you need any significant exchange at all.

It is an oversimplification. There is a large area in between where it 
works. Look how multi-core architectures blossom. A multi-core is a kind 
of parallelism with far greater exchange rate and coupling (all shared 
memory) than an architecture of piped communications.

>> I don't see much use in the proposal. The key feature must be the points
>> where the "task" yields control, enters non-busy wait for an external
>> event. Ideally it must be shaped as an accept statement or an entry call.
>
> Jean-Pierre Rosen proposed a ""passive task" feature as an alternative to
> the generator proposal. It uses the existing task syntax, but gets rid of
> the thread of control.

And this is exactly what is needed, IMO. A set of "tasks" driven by 
another task, switched in a non-preemptive manner.

> Of course, Janus/Ada implements all tasks that way today, so I don't see a
> lot of benefit to that. But I can see where it might help other
> implementations.

Only losses for blocking I/O.

> The feature as proposed can't be used in a task unless one (manually) adds
> locking, meaning you still have all of the possibilities for deadlock and
> race conditions. I believe that if we're going to advance parallelism at
> all, we have to do something to make it possible to write (sufficiently
> restricted and compile-time checked) code where one doesn't need to worry
> about those things. After all, the main reason that it's too hard to write
> parallel code is the need to carefully consider every possible deadlock and
> race condition. Otherwise, something like Parafin would provide everything
> needed and Ada clearly would be the choice for parallel code. ;-)

The problem at hand is that parallel asynchronous code cannot be 
designed in a reasonable way, at all. It is written it in a form of a 
state machine, logically and technically *gotos*. It is the state of 
software engineering of 70s wrapped in Ada constructs.

Before we can talk about deadlocks, which I am almost sure impossible to 
statically eliminate in this case, we need to be able to design the 
software in a minimally sane way.

> So I don't see any reason to add any new sequential features that add to,
> rather than reduce, the possibilities of deadlock and races.

You cannot reduce them, they are in the nature of exchange protocols, 
application logic, physically distributed hardware and software. Each 
time you get a timeout running some networking application, that because 
of some deadlock somewhere.


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


  reply	other threads:[~2016-06-25  7:11 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 [this message]
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
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