Thread-Multiplexing for D

Sönke Ludwig sludwig at outerproduct.org
Fri Sep 13 04:07:54 PDT 2013


Am 13.09.2013 12:57, schrieb Dmitry Olshansky:
> 13-Sep-2013 13:57, Sönke Ludwig пишет:
>> Am 12.09.2013 19:55, schrieb Sean Kelly:
>>> On Sep 12, 2013, at 8:34 AM, Bienlein <jeti789 at web.de> wrote:
>>>
>>>> About thread-multiplexing... You find a lot in Google when
>>>> searching for socket multplexing, but not when searching for
>>>> thread-multiplexing. Maybe I coined the term myself (don't know
>>>> any more) when reading the section here:
>>>> http://golang.org/doc/effective_go.html#goroutines
>>>>
>>>> "Goroutines are multiplexed onto multiple OS threads so if one
>>>> should block, such as while waiting for I/O, others continue to
>>>> run. Their design hides many of the complexities of thread
>>>> creation and management."
>>>
>>> The trick in D is that because statics are thread-local by default,
>>> any multiplexed app like this that expects its static data to remain
>>> consistent across calls is likely to fail.  I've mentioned fiber-local
>>> storage here in the past, but it's a tricky problem.  But I think it's
>>> one that we will need to sort out for things like this to work as the
>>> user expects them to.
>>>
>>
>> Until we have something built-in, I've implemented a template based
>> solution for task local storage (same as fiber local storage, but the
>> lifetime is different as fibers get recycled for consecutive tasks):
>>
>> http://vibed.org/api/vibe.core.core/TaskLocal
>
> I do hope O(n) is a typo and it should be O(1).
> Anyhow what n stands here for?
>

Indeed, stupid typo.


More information about the Digitalmars-d mailing list