I'm trying to understand concurrency in Python and am confused about how threads are scheduled and how tasks (in asyncio library) are scheduled to run/wait.
Suppose a thread tries to acquire a Lock and is blocked. Does the Python interpreter immediately put that thread into the 'blocked' queue? How is this blocked thread put back into the running state? Is there busy waiting involved?
How is this different when a task (the equivalent of a thread) in the asyncio library is blocked on an async mutex?
What is the advantage of asyncio, if there is no busy waiting involved in either of the above two cases?