Вместо написания приостановленного ввода-вывода вы написали блокирующий ввод-вывод:
File(d).walk().map {
it.length()
}
Ваши функции фактически никогда не приостанавливаются, и вместо этого они блокируют один поток, связанный с их диспетчером runBlocking
.
Выне дал вашим сопрограммам возможности для одновременного выполнения.
Если вы примените withContext(IO) { ... }
к приведенному выше коду, вы получите параллелизм, но из простого старого типа Java, когда несколько потоков блокируются в операциях ввода-вывода вместе.