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

via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Mar 28 06:27:55 PDT 2015


On Friday, 27 March 2015 at 22:32:32 UTC, ketmar wrote:
> 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).

Nah. The point is to get parallel work done with less complexity, 
but at some performance cost. A design where you have to 
accurately predict running time per task in order to get decent 
latency is basically adding back the complexity in order to get a 
simplistic language/runtime with no benefits to the programmer.

In essence, you should ideally be able to break a task into all 
it's independent parts and run them in parallel (i.e.. futures, 
events etc). Preferably batch them to get better performance, and 
sort them based on when they have to complete. Then have a 
mechanism that exerts back-pressure if deadlines are in danger, 
telling the load balancer to back off. How you go about it 
depends on the application, but that ought to be the ideal for 
anything that resembles a modern soft realtime platform.

> the whole thing of cooperative multitasking is to be... 
> cooperative.

Nah. Cooperative multitasking is a sorry excuse that belongs to 
the 80s. This should be as transparent as possible. You cannot 
insert "yield" into an external library.


More information about the Digitalmars-d-announce mailing list