- [x] Use queues - [x] Immediate head chop after dequeue - [x] Thread.yields - [ ] Sleep option - [x] Use linked list for queues (increase performance) - [ ] shutdown option - [x] Queue policies - [x] Length cap - [ ] Exceptions - [x] Queue deletion ## Todo - [ ] Exception handling - [ ] If the watcher has an error then we should throw an exception * But it has to be on the main thread, therefore it should happen when using any of the `Queue` methods * We need to set a value in those methods for this, everything should then throw an exception as the underlying endpoint is dead - [x] We must set a field in `Manager` which `Queue` can check and then throw an exception - [x] `Queue` must take in the `Manager` instance - [x] Add checks in `Queue` class - [ ] New sys, before calling `continue`, should `yield()` - [x] Add `.start()`, don't start the watcher immediately - [x] Code - [x] Documentation