Does Linux have the equivalent of WinNT's i/o completion ports to prevent heavy I/O from freezing the user interface?
The asynchronous io API has nothing to do with this.
random google result: https://news.ycombinator.com/item?id=11866076
>Or using separate threads for I/O vs UI?
not the target use for completion ports, which is handling thousands of outstanding IO requests with a few threads.