[Mono-dev] System.Threading.Parallel

Andreas Färber andreas.faerber at web.de
Sun Dec 23 07:32:02 EST 2007


Am 22.12.2007 um 03:11 schrieb Miguel de Icaza:

>> Personally, I'd
>> rather stick with the published ECMA standard and a superior Mono
>> implementation than with some evolving Microsoft CTP potentially
>> leading to IPR questions at some point. Virtually nobody uses their
>> Compute Cluster Edition anyway.
> Well, the problem with System.Threading.Parallel is that it has never
> been used in practice as far as I know.   This was an API designed by
> Intel and submitted to ECMA, but as far as am aware, it did not go
> through the regular process of API usability testing or got any use
> beyond its definition.
> The CTP process (or any other process) in which APIs are implemented  
> and
> then refined based on actual usage patterns did not benefit this
> library.

True, but my point was that an estimated 99% of all clusters run Linux/ 
Unices; Microsoft will therefore not get feedback from those as part  
of their CTP process, only from regular users optimizing .NET code for  
their Windows-based multi-core/multi-processor systems and maybe the  
~5 (?) Microsoft-sponsored universities worldwide running Windows  
Server CCE, launched in late 2005.

So the vast majority of cluster users are exclusively on our target  
platforms anyway, and thus it's up to us to provide some decent API  
("a superior Mono implementation"): Neither ECMA nor Microsoft will be  
sufficient for this niche at this stage, and without someone like me  
implementing something what-so-ever that can be evaluated on our  
platform and on our side of the market-share, we can't really tell. I  
wasn't saying ECMA-335 were perfect or complete, but STP is certainly  
a starting point.

I've had a brief look at JSR-166 (java.util.concurrent), which has  
undergone the Java Community Process evaluation procedures, and its  
API looks highly complicated, more like a full MPI equivalent with all  
kinds of synchronization classes. That contrasts with the simplistic  
design of ECMA STP, which I really like; I prefer it hiding the  
underlying complexity from the application developer, but would like  
to have that exposed to developers on a secondary level nontheless, as  
a Mono-specific bonus feature.

Judging from this article [1] Microsoft seem to stick rather close to  
the ECMA design, but call things differently (System.Concurrency.dll;  
static method Parallel.For) and add a few operations and classes  
(Parallel.Aggregate, Parallel.Do, Task<T>, TaskManager); they do seem  
to still focus on multi-processor systems rather than on HPC  


[1] http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx?loc=en

More information about the Mono-devel-list mailing list