Will this new technology be a replacement for OpenMP? What will the future support be like for OpenMP? Some comments on what users should do in the interim before the release of the currency runtime would be appreciated.
mwirth,
Much of the functionality we’ve talked about in the Asynchronous Agents Library and the Parallel Pattern Library in these past 2 videos is implemented as template classes and methods in header files; they aren’t policy driven template classes, but they also don’t require you to implement a COM interface either to use them. The Agents & Parallel Pattern Library (PPL) are built on top of the Concurrency Runtime itself, which will likely have some significant non-template code (e.g. compiled binary).
CraigL,
Regarding OpenMP: Agents and the PPL are not necessarily a replacement for OpenMP, consider them library based alternatives. The Agents library in particular is orthogonal in the scenarios it addresses to what’s provided in OpenMP. We haven’t announced any ship or product dates for the work that we’ve discussed in these two videos or on our blog at http://blogs.msdn.com/nativeconcurrency so when folks ask what to do in the interim in C++, I’ll tend to suggest looking at what’s available right now like OpenMP if it fits the pattern. The other forward looking guidance that can serve is to start preparing by decomposing applications now into isolated tasks and components that minimize shared state to avoid those pesky correctness issues when you go to parallelize them.
Hope this helps,
Rick
Sounds like a cool addition for C++. Sounds similar to the Erlang actor based programming model. Although I think the Erlang model is more restrictive. Do I understand correctly that Actors are not reentrant (so no other messages are handled during a blocking receive)?
[after watching the full video]Ah, Erlang is mentioned near the end. Would still like to know which constraints are same or different as compared to erlang.... One more thing. Will I get into trouble if I call into legacy code that uses traditional threading constructs like mutexes and critical sections?
Hi, really enjoyed the video(s).
I don't generally code in C++ as such, I was just wanting to clear up a couple of questions.
In the video you mentioned that pointers should be discarded as soon as they are passed on to the next agent, and in one of the examples given for an x MB image file the pointer would be handed off from one to the next, and discarded en-route. Where does the responsibility lie for releasing the storage pointed to by the pointer?You have based this on the dataflow model of computation. Yes?If so, and this is sort of related to the previous topic, what would be the best approach for handling persistent storage, and/or shared memory?