
algoritms to work in asynchronous way. AFAIK, it is generally agreed that threads are easier to write/understand/debug than asynchronous calls.
I respectfully disagree with that statement. My experience has been that the complexity of correctly and effeciently synchronizing multiple threads is far more difficult to debug and understand than an async model where all I/O happens in one thread, but that is a subjective statement. If you take my previous example where an async server passes tasks off to worker threads and those threads require synchronous I/O (again real world example is an async web server with database connections), then you might have a valid argument. If I was to write an asio application today that had to access MySQL, that's what I would do.