Implementing A "Future" Set In order to allow a thread to wait for a set of "futures" simultaneously, we could implement a "futures" set. We could implement either an 'and' set (which waits until all its member "futures" have set values) or an 'or' set (which waits until one of its member "futures" has a set value). A "futures" set will contain a list of "future" objects, each of which will have an index. In addition, the "futures" set will have a condition variable, which will allow clients of the "futures" set to wait for the set to be "ready".