我需要了解的是,如果一个系统只有一个IO线程,在多个协程上运行多个IO操作时,这些协程是否可以以挂起的方式使用同一个线程(也就是说,当协程A正在等待IO结果时,协程B可以利用该线程进行其IO操作),还是该线程会被第一个IO操作阻塞?
我需要了解的是,如果一个系统只有一个IO线程,在多个协程上运行多个IO操作时,这些协程是否可以以挂起的方式使用同一个线程(也就是说,当协程A正在等待IO结果时,协程B可以利用该线程进行其IO操作),还是该线程会被第一个IO操作阻塞?
这取决于你正在执行什么类型的IO操作。如果你正在执行 异步 IO 操作,那么这个IO操作不会阻塞线程,让其他协程可以使用它。如果你正在执行 阻塞 IO 操作,那么它会阻塞线程,其他协程无法使用它。
suspend
的函数是没有任何区别的。您需要切换到另一个支持进行异步请求的IO库。 - Marko Topolnik