DirectX queue API (asynchronous compute) is conceptually similar to multithreading API on modern operating systems (windows/linux/etc). OS gives you an API to start multiple threads. You can start more threads than your CPU core count. OS will interleave threads if needed. Threads (generally) proceed asynchronously of each other. There is no guarantees of timing, and no guarantees that two threads run concurrently and/or run sequentially. If ordering guarantees are needed, the programmer will manually add synchronization primitives between threads/queues.
AMD GCN functions a bit like hyperthreading in Intel CPUs. It can execute multiple queues concurrently by sharing the compute units between them. If the compute units are not fully occupied from a single queue, having work available in multiple queues can be used to fill the compute units better. Similarly to hyperthreading, the gains are highly application specific (but usually in 10%-30% region). In some corner cases the performance can even be slightly lower (for example heavy cache trashing or starvation).
DirectX queue API doesn't give any guarantees about concurrent execution. This has been a common design in threading APIs on CPU side. Otherwise the developer would have to write special case handling for hardware that doesn't have enough hardware threads/queues.