comp.lang.ada
 help / color / mirror / Atom feed
From: Hadrien Grasland <hadrien.grasland@gmail.com>
Subject: Re: RFC: Prototype for a user threading library in Ada
Date: Sat, 2 Jul 2016 09:49:34 -0700 (PDT)
Date: 2016-07-02T09:49:34-07:00	[thread overview]
Message-ID: <f7fddb06-2cde-4982-baf1-3b1a83e26106@googlegroups.com> (raw)
In-Reply-To: <nl8evv$vha$1@gioia.aioe.org>

Le samedi 2 juillet 2016 15:18:58 UTC+2, Dmitry A. Kazakov a écrit :
> On 2016-07-02 13:13, Hadrien Grasland wrote:
> > Le samedi 2 juillet 2016 06:36:09 UTC+2, Randy Brukardt a écrit :
> >> But I don't think that really helps the race and deadlock issues that are
> >> the real problem with programming with Ada tasks. I'd like to find some help
> >> there, too.
> >
> > Here's my view of this: people are heavily overusing shared mutable
> > data in multitasking programs,
> 
> This is motivated by the hardware architecture of multi-cores with 
> shared memory.

Fair enough, but I would argue that outside of the realm of data-parallel algorithms, most of the benefits of shared memory architectures reside in sharing constant data, not mutable one.

In any hardware architecture that features caches, and in any compiler whose memory model allows instruction reordering, synchronization of shared mutable data is always going to be problematic. So better do without that synchronization whenever practical.


> > and that is the source of too many data
> > races, which in turn people attempt to fix with locks, thusly killing
> > their performance and introducing deadlocks.
> >
> > In many cases, better performance and correctness can be easily
> > achieved by moving to asynchronous tasking runtimes, where the runtime
> > internally manages an event-based dependency graph of tasks that can be
> > processed condurrently, and data is kept task-private but can be moved
> > around between tasks.
> 
> Event-controlled architecture is exposed to generators (life-locks), and 
> no less to dead-locks and race conditions.
> 
>  From the software developing POV it is far worse than shared memory 
> architecture. The only advantage it has over the former that it can be 
> truly scalable while shared memory is a bottle neck.

I would claim that if your architecture is based on a notion of data ownership and favors the model of moving data over that of concurrently accessing it, then...

- Performance does not have to suffer (if what you move around is pointers or references to data, not the data itself)
- Race conditions in the message-passing process are easy to deal with (just do a memory fence before a thread sends data and after another receives it)

As for deadlocks in event-driven programs, they do occur, but they are trivial to detect (since the task graph is explicit, one can just look for a cycle in it), and good interface design can make it hard to trigger accidentally (if the event produced by a task A cannot be easily used as a dependency of that same task).


  reply	other threads:[~2016-07-02 16:49 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
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 [this message]
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