A big category of operations that we would like to execute in a background thread can be summarized with the words "do something and return a result". Such operations are represented by a pattern called Future.
A Future always wraps some function. In Delphi's Parallel Programming Library, a Future is represented by an IFuture<T> interface, where T is the data type returned from the function. This interface is created by calling the TTask.Future<T> function. IFuture<T> is derived from ITask, so it supports all ITask methods and properties, such as Status, Cancel, Wait, and so on.
The ParallelFuture demo shows two ways of using an IFuture<T>. In the first scenario, the code creates a Future, does some other work, and then asks the Future about the result of the calculation. If the background calculation is not yet finished, the...