int
future_yield(qthread_t *me);
The argument is a pointer to the thread attempting to yield. This can be found out with a call to qthread_self()
If a thread calls the yield function with an argument which is not a qthread which was created as a future, the yield function do nothing. This is acceptable behavior and it is generally expected that threads will attempt to yield before creating or joining with futures in the chance that yielding is necessary.
The typical sequence for creating futures is:
1) yield
2) loop creating futures
3) [optional: join with futures]
4) acquire