Added a fair lock that uses a bounded queue to order threads