- [ ] write a mutex primitive - [ ] implement locking and unlocking of the mutex - [ ] write tests for the mutex - [ ] write a semaphore primitive - [ ] implement accquiring and releasing the semaphore (for single and multiple slots) - [ ] write tests for the semaphore