# Concurrent Sorted Linked List HW - Moutaz Debbaneh
## Introduction
## Notes
We try to implement a concurrent sorted linked list in different manners to get thread-safe and suitable performance on this data structure.
1. Maintaining the length of the list was implemented using a class variable that gets edited upon successful add/remove
operations. This way, getting the length is done in O(1).
2. The number of successful/unsuccessful operations was also implemented in a similar way.
3. All results matched except for the results of unsuccessful contains. The is because we are using a read lock while
writing to a shared-memory variable. To fix this without making the function much slower, two new locks were made for accessing the variables representing the number of successful/unsuccessful contains. This way, the results all matches and the RWLock contains method is still much faster than other implementations.
4. The execution times below might be a little slower than expected because the tests are run while the laptop is on