I'm working on a small library to express computations in terms of composable trees of dependencies. These dependencies can cross thread boundaries allowing one thread to depend on a result generated in another thread. This is sort of a riff on the whole
future concept, but the idea is that you have chains of these with a potential fanout in the chain greater than 1. Kind of like the venerable
make utility in which you express what things need to be finished before starting on the particular thing you're talking about.
But I'm not sure what I should call it. Maybe Teleo because it encourages to express your program in terms of a teleology.
I'm writing this basically because I've encountered the same problem on at least two different projects now, and it occurs to me that it would be really good to have a well-defined standard way of launching things in other threads and waiting for the results that suggested an overall program architecture. The projects I worked on were all set to develop a huge mishmash of different techniques that wouldn't necessarily play well together or be easy to debug.