On 4/05/2020 20:29, Andrzej Krzemienski wrote:
These are the guidelines that I learned from Robert Ramey's talk on documenting a library (https://www.youtube.com/watch?v=ACeNgqBKL7E). As a potential user I need to learn in no more than 5 minutes: what the library does, how I will use it (LEAF documentation does it perfectly), and what are the requirements. For the last point I would expect to see: "your platform needs to support TLS, and your program cannot use coroutines in asynchronous manner." IOW: high-level design trade-offs should be documented up front.
Coroutines can be used asynchronously without using threads. You just need to be careful to schedule them on an executor that is backed by only one thread, rather than a threadpool. In fact at least all the times that I have personally used coroutines, it's been in this manner -- when you're just managing multiple parallel tasks with a known-external delay (eg. slow network I/O), you don't really need a threadpool.