Gary Willoughby: "Why Go's design is a disservice to intelligent programmers"

Dicebot via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Mar 28 11:55:38 PDT 2015


On Saturday, 28 March 2015 at 14:33:14 UTC, Russel Winder wrote:
> On Sat, 2015-03-28 at 12:52 +0100, Sönke Ludwig via 
> Digitalmars-d-announce wrote:
>> […]
>> 
>> You can access TLS from an event callback just as easy as from 
>> a fiber.
> […]
>
> TLS is the evil here. Anyone working with TLS is either writing 
> an
> operating system or doing it wrong.

I don't think it is that simple. From the purist academical 
parallelism POV - most likely. In practice it often can be quite 
the contrary, TLS is your best friend (depending on how efficient 
platfrom implementation is).

To get best high-load performance best strategy is to actually 
design applications with specific hardware traits in mind, 
including pre-defined amount of CPU cores and their task 
affinity. Computation parallelism is relatively easy, it is 
memory parallelism that remains a challenging task as long as you 
try to get rid of locking overhead, costly synchronizations and 
optimize cache loads. Something like moving fibers between 
threads is absolute disaster in this sense even if it looks like 
a tempting abstraction on paper. But if you prohibit that by 
design and maintain strict affinity between fibers and threads, 
using TLS allows for very nice optimizations (as it is 
effectively limited sharing without locking / atomics). It can be 
complicated to design (which is why Go choice makes sense for 
their target audience) but benefits are also very good.


More information about the Digitalmars-d-announce mailing list