BTW:

The repository is now public at:

http://bitbucket.org/eris0xaa/dendrite/

On Mon, Apr 12, 2010 at 10:02 AM, Jim Burnes <jvbur...@gmail.com> wrote:
> Hi, Michael.
>
> I gathered that you've been away.  Hope everything is going well at
> BBC Research.
>
> I've been going over several architectural models for Dendrite lately.
>  It seems that, just as soon as I nail down one architecture and get
> it implemented / tested, several new ideas occur to me.
>
> My latest realization with the 0.9 release is that, in trying to glue
> Dendrite the OS level I almost created another Turing-complete
> implementation of Dendrite.  I think that sort of infinite recursion
> is what's know as the Turing Tarpit.  Generalizing your application
> solution and then trying to generalize that.
>
> :-)
>
> In either case, since my OS connection layer needed a complete mailbox
> system itself I figured that I would force myself to eat my own dog
> food and implement the OS glue using Dendrite itself with a new async
> component method I devised.  This would allow me to create Console,
> Session and CLI components that run within Dendrite.
>
> The trick with the async components so far is that I have to introduce
> a "wait" primitive that handles the differences between POSIX and
> Windows IO Requests.  Now that I have that solved, one of the clever
> library developers just *had* to ask me if my library would work
> multi-core.
>
> Of course that question clarified some of the questions I'd been
> asking myself.  What would the correct Dendrite architecture look like
> if it ran multi-threaded, multi-core.  It turns out that the answer to
> that solved other issues I've been having.
>
> Since Dendrite is a message passing system, making the handlers into
> async components cleans up the multi-core issues.
>
> Also (and I think this part is pretty fascinating) one of the problems
> with multi-threaded code is that to communicate between threads
> requires a thread-safe mailbox.
>
> It turns out that there are such things.  The simplest of course is to
> use mutex locks around the critical mailbox send/receive code.  But
> mutexes are inefficient because they cause re-scheduling of the
> blocked process.
>
> So you use a lock-free mechanism, but those are rare and somewhat
> complex beasts.  However there is a relatively simply mechanism that
> allows a single-thread writer and single-thread reader (or
> sender/receiver etc).  It's a lock-free ring buffer.  Normally the
> one-writer, one-reader mechanism would be a limitation, but since each
> Dendrite thread executes many cooperating components based on
> co-routines it works out wonderfully.
>
> I even found a high-speed ring buffer that is cache coherent, so that
> sibling threads (threads running on cores on the same CPU) are able to
> communicate, thread-safe, at very high speeds.
>
> Anyway, you can see I'm kind of excited about all of this.  The beauty
> of this is, with a few changes to the way the async components work
> and a new mailbox that is thread safe (at least to other threads), I
> can make this thing scale way, way up.
>
> Then I'm really, really going to get back to the app I was writing
> that I needed to write a messaging system for.  :-)
>
> Jim
>
>
> On Mon, Apr 12, 2010 at 9:37 AM, Michael Sparks <spark...@gmail.com> wrote:
>> Hi Jim,
>>
>>
>> On Mon, Mar 29, 2010 at 9:27 PM, Jim Burnes <jvbur...@gmail.com> wrote:
>>> Kamaelia People,
>>>
>>> I've already sent this to Michael, but I thought I'd forward it to the group
>>> because we're all in different time zones...
>>
>> I've been away from connectivity for the past couple of weeks, but now
>> that I'm back I'd just like to say congratulations! :-) I'll try and
>> take a look at my earliest opportunity. I've not used D, but this will
>> be a nice introduction :-)
>>
>> Best Regards,
>>
>> Michael
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "kamaelia" group.
>> To post to this group, send email to kamae...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> kamaelia+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/kamaelia?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"kamaelia" group.
To post to this group, send email to kamae...@googlegroups.com.
To unsubscribe from this group, send email to 
kamaelia+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/kamaelia?hl=en.

Reply via email to