ASST1 Part 1: Implement locks and conditional variables