Is this a bug in the concurrency lib or am i using it incorrectly?

John Colvin john.loughran.colvin at gmail.com
Mon Jul 1 13:54:56 PDT 2013


On Monday, 1 July 2013 at 19:15:45 UTC, Gary Willoughby wrote:
>> If you remove the the try..catch you will notice that 
>> OwnerTerminated is
>> thrown, if this is the intended behaviour, I don't know. 
>> Probably is,
>> because this would be a pretty obvious bug.
>
> Ah right, so i guess the main thread is finishing and throwing 
> the exception to writer before sender has sent anything?

An easy way of dealing with this would be to have main wait for a 
message from another thread telling it to terminate.

My way of imagining threads in the std.concurrency model (for 
some reason it helps me not forget about these problems):

It's a tree structure, where main is the master node and all 
other threads are - directly or indirectly - owned by main (main 
is owned by the OS)

           OS
           |
         main
       /   |  \        gravity
      0    1   2          ||
    /  \   |    \         ||
   3   4   5     6        ||
                / \       \/
               7   8

If any thread lets go of it's parent for any reason, all the 
children below it fall to their deaths.

Hmm...Concurrency Tree Diagrams. Is this already a thing?
With some coloured arrows showing message pathways it could be a 
really nice visualisation of a complex multi-threaded program.


More information about the Digitalmars-d-learn mailing list