> I'm curious, would you describe what you need to do? perhaps at a pseudo code level...?
I don't want to go into detail, but here's an outline:
1 Do some inherently sequential processing to decompose the problem into a (possibly large)
number of (possibly large) data structures which must later be manipulated in synchrony.
2 Solve a (large) number of subproblems on variants of the aforementioned data structures,
In each of a number of threads:
a) while communicating with a master thread regarding modifications to the data structure,
b) while modifying a copy of the data structure in response to those instructions,
c) while detecting specific changes in the data structure and reporting them to the master,
d) when the master indicates that there are no more modifications necessary, return a copy
of the final version of the data structure to be stored for later use,
e) wait for another unit of work or for an instruction to terminate the thread.
3 Examine the final products to find solutions to the original problem.
Sorry to be so vague, but I don't really want to get into the specifics of the problem at hand
at this point and in this forum I'm only interested in discussing the concurrency-related aspects.
BTW, I've recently noticed that the GCC online docs mention that C++11 futures are partially
implemented in at least the latest svn repository.