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: Wed, 22 Jun 2016 20:42:48 -0500
Date: 2016-06-22T20:42:48-05:00	[thread overview]
Message-ID: <nkfeqn$nl8$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: d9d7f8f5-8b72-450b-8152-4b6116c6ce2c@googlegroups.com

"Hadrien Grasland" <hadrien.grasland@gmail.com> wrote in message 
news:d9d7f8f5-8b72-450b-8152-4b6116c6ce2c@googlegroups.com...
...
>I agree that implementation support for coroutines would be extremely 
>valuable, if it
>were available at the language level (as in Python, C#, Go...) or even in 
>specific
>implementations (as in Visual C++).

Coincidentally, we just spent quite substantial portion of the most recent 
ARG meeting discussing this. (See AI12-0197-1; there are proposed 
alternatives as well but those won't get posted for a few weeks - probably 
along with the minutes.)

The problem with such proposals is that they are quite expensive to 
implement, and they don't seem to buy that much above the existing Ada 
tasking model. [Especially as the proposal explicitly does not support any 
concurrency; one has to use POs/atomics in the normal way if concurrency is 
needed.] (After all, if you really want coroutines in Ada, just use 
Janus/Ada and regular tasks as it implements all tasks that way. :-)

The problem with the Janus/Ada implementation is the inability to use 
threads to implement that; that's fixable but I'd need a customer to help 
support the work. (I'd use a scheme internal to the task supervisor similar 
to your "events" rather than trying to assign tasks to threads.)

...
>However, I think that as it stands, we are just about as likely to see it 
>happening in Ada as we are to get lambdas ...

We also talked about limited lambdas in Pisa: see AI12-0190-1. So you're 
obviously right. ;-)

---

The problem I have with the library approach (and the coroutines and the 
like intended to support it) is that it does seem to solve any problems. I 
understand why such approaches get used in languages that don't have a real 
tasking model, but Ada hasn't had that problem since day 1. And the reasons 
that writing tasking code in Ada is too hard aren't getting addressed by 
these schemes (that is, race conditions, deadlocks [especially data 
deadlocks], and the like).

I'd prefer to concentrate on language features that make it as easy to write 
(restricted and correct) parallel code as it is to write sequential code. I 
don't see how libraries or coroutines or lambdas are getting us any closer 
to that.

I'd like to understand better the motivations for these features, so if you 
(or anyone else) wants to try to explain them to me, feel free. (But keep in 
mind that I tend to be hard to convince of anything these days, so don't 
bother if you're going to give up easily. ;-)

                                            Randy.




  parent reply	other threads:[~2016-06-23  1:42 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 [this message]
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
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