Consequently, for any process in the environment, S has either not been executed or has been executed. The following is the weakest but still useful condition we can place on the process speed. We say a process has weak fairness to mean that it executes all statements it controls with weak fairness. Synchronization primitives, such as locks, allow users to choose arbitrary levels of granularity. Atomicity introduces a trade-off between programming ease and performance.
Weak fairness is easy to implement.
All that is needed is a scheduling discipline in which a ready process eventually gets to run for some nonzero duration, e.g., fifo.