So a future is if I have a variable x in thread t, I can assign x to a future f, which is essentially a null pointer, and then in thread t when I need to use x, thread t will go off and calculate the value of f that x is pointing to, going into a wait state until it gets a value for f assigned so x actually is pointing to some value, so that it can use x for whatever it is and carry on? Is this is basic idea? I'd be interested in learning more. However, I wonder if one wants a pre-written lib for this, or if it is easy enough to implement oneself. Like if one is using the posix thread lib, would it be hard to throw some add-ons in there oneself to support "futures"?