Gary Willoughby: "Why Go's design is a disservice to intelligent programmers"
ketmar via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Mar 27 15:48:34 PDT 2015
On Fri, 27 Mar 2015 22:37:21 +0000, weaselcat wrote:
> On Friday, 27 March 2015 at 22:32:32 UTC, ketmar wrote:
>> On Fri, 27 Mar 2015 16:11:41 +0000, Ola Fosheim Grøstad wrote:
>>
>>> Not a broken design. If I have to run multiple servers just to handle
>>> an image upload or generating a PDF then you are driving up the cost
>>> of the project and developers would be better off with a different
>>> platform?
>>
>> but it is broken! the whole point of async i/o servers is that such
>> servers spend most of their time waiting for i/o. and if you need to do
>> some lengthy calculations, you either spawns a "real thread"
>> and commands it to wake you up when it is finished, or asking external
>> server to do the job (and wake you when it is finished).
>>
>> what moving fibers from thread to thread does is bringing in state
>> copying (we want our threads fairly isolated, aren't we? so either
>> copying, or ownership management).
>>
>> the whole thing of cooperative multitasking is to be... cooperative. in
>> several years some Shiny New Async Framework will use "no transferring
>> fibers between worker threads" as Spectacular Invention.
>
> as an outsider to the web-scale world,
> this entire thing seems like a half-baked fork reimplementation
the whole "userspace threads" concept is a reimplementation of kernel
threads and sheduling. ;-)
the main question is the amount of work required to switch between
threads. if we have a little amount of threads that does heavy work, it's
ok to use kernel mechanics: the time of context switching is neglible.
but it we have alot of threads that mostly waits for i/o, then does very
little amount of work and waits for i/o again, context switching time
starts to show itself. so we moving the whole "treading" thing to user
application, thus minimising thread context switching time.
all in all this is a half-baked kernel thread reimplementation, yes. but
it has it's own pros. and cons, of course: such as unresponsive user
thread can block the whole app, like in good old windows 3 times.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-announce/attachments/20150327/9edbc13a/attachment.sig>
More information about the Digitalmars-d-announce
mailing list