Document the thread wakeup/scheduling/fairness semantics for the STM primitives
In the TSem documentation I saw this:
Note that TSem has no concept of fairness, and there is no guarantee that threads blocked in waitTSem will be unblocked in the same order; in fact they will all be unblocked at the same time and will fight over the TSem. Hence TSem is not suitable if you expect there to be a high number of threads contending for the resource.
Is this true for all the STM primitives? If so can this be clarified in the documentation for each primitive? Or in the main STM module page and each primitive referring to it. This is an important aspect of the behavior which I believe can sometimes be very important for the user of the library.