Asynchronicity in D
Sean Kelly
sean at invisibleduck.org
Fri Apr 1 08:27:39 PDT 2011
On Mar 31, 2011, at 4:03 PM, dsimcha wrote:
> == Quote from Sean Kelly (sean at invisibleduck.org)'s article
>> On Mar 31, 2011, at 11:48 AM, dsimcha wrote:
>>> == Quote from Andrej Mitrovic (andrej.mitrovich at gmail.com)'s
>> article
>>>> Are fibers really better/faster than threads? I've heard rumors that
>>>> they perform exactly the same, and that there's no benefit of using
>>>> fibers over threads. Is that true?
>>>
>>> Here are some key differences between fibers (as currently implemented
>> in
>>> core.thread; I have no idea how this applies to the general case in
>> other
>>> languages) and threads:
>>>
>>> 1. Fibers can't be used to implement parallelism. If you have N > 1
>> fibers
>>> running on one hardware thread, your code will only use a single core.
>> It bears mentioning that this has interesting implications for the
>> default thread-local storage of statics. All fibers running on a thread
>> will currently share the thread's static data. This could be worked
>> around by doing TLS manually at the fiber level, but it's a non-trivial
>> change.
>
> Let's assume for the sake of argument that we are otherwise ready to make said
> change. What would the performance implications of this be for programs using TLS
> heavily but not using fibers? My gut feeling is that, if this has considerable
> performance implications for non-fiber-using programs, it should be left alone
> long-term, or fiber-local storage should be added as a separate entity.
It's more an issue of creating an understandable programming model. If someone is using statics, the result should be the same regardless of whether the code gets a dedicated thread or is multiplexed with other code on one thread. ie. fibers are ideally an implementation detail.
More information about the Digitalmars-d
mailing list