Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
thousands of CPU cores
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-07-10 (21:37)
From: Jon Harrop <jon@f...>
Subject: Re: [Caml-list] Re: thousands of CPU cores
On Thursday 10 July 2008 22:19:05 Gerd Stolpmann wrote:
> After having ported godi to mingw I am not sure whether this works at
> all. The point is that you usually want to inherit OS resources to the
> child process (e.g. sockets). The CreateProcess Win32 call
> ( mentions
> that you can inherit handles, but I would be careful with the
> information given in MSDN. Often it works only as far as the presented
> examples. Windows isn't written for multi-processing, and its syscalls
> aren't as orthogonal as in Unix-type systems.
> Furthermore, it looks like a pain in the ass - often you want to run
> some initialization code, and without fork() you have to run it as often
> as you start processes.
> Also, Windows is just a bad platform for event-based programs, and you
> want to do it to some extent (e.g. for watching all your child
> processes). Only for socket handles there is a select() call. For all
> other types of handles you cannot find out in advance whether the
> operation would block or not.
> So... if there is any chance you can select the OS, keep away from
> Windows for this type of program.

I think your conclusion needs qualification.

You are trying to shoehorn an existing process-based Linux solution onto 
Windows and discovering that it does not work well. However, Windows already 
provides different ways of achieving the same thing, e.g. F# with its 
first-class events and built-in asynchronous programming syntax using 
the .NET thread pool and mailboxes for message passing.

Moreover, the idiomatic solution on Windows is almost certainly faster than 
anything you can reasonably write under Linux in the absence of a concurrent 
GC (i.e. off the JVM).

Dr Jon D Harrop, Flying Frog Consultancy Ltd.