The event loops, which currently use epoll (Linux), iocp (Windows) and dispatch_queue (Darwin).
The user API, which is currently a callback-style interface
The watch thread: Currently, every invocation of wtr::watch() spawns a new thread. This may be undesirable to some users. While we do test the efficiency of a large number of parallel watchers, and those tests are sufficiently performant, spawning a new thread for each watcher just seems a bit... well, there are better ways to do this.
We should investigate boot::asio in these places: