I think simple is best in this case, at worst it will cause (per granularity) the writers to loop back to wait on their semaphore again.