[cpp-threads] Asynchronous Execution Issues (caching_async)

Herb Sutter hsutter at microsoft.com
Wed Apr 29 01:36:56 BST 2009


Just to repeat my $0.02 that I've been saying since the Kona meeting:

1. It is highly desirable to have an async() that is not guaranteed to run on a different thread, for exactly the reasons Hans mentioned -- enabling the new breed of work-stealing implementations that have significantly better performance and will be widespread in the next small number of years (Intel TBB, Java Fork/Join, Cilk++, and three Microsoft products (PPL for C++, TPL and PLINQ for .NET).

2. But semantically you also want I understand why it's also desirable to have an async()

Without #1, we don't support efficient parallel computation (at least, no longer competitive with current industry practice). Without #2, you don't support asynchrony/concurrency such as getting work off a GUI thread to run in the background. #1 can't be used for concurrency, and #2 can't efficiently be used for parallelism. That's why you want both, and the user needs to be able to spell both.

Herb


> You might still get acceptable results at sufficiently large
> granularity.  But this seems far more limited than Cilk.  And
> presumably Cilk was largely motivated by the inadequacy of this kind of
> solution.

> Doug may undesratnd the tradeoffs here a bit better.  But as far as I
> can tell, there would be a significant risk of standardizing something
> that's useless in the long run.




More information about the cpp-threads mailing list