Потоки переключаются с квантом около 28 миллисекунд или около того.
Да, если навертеть много потоков, кэш будет вымываться. А вы думали, в сказку попали? Хорошие HPC программы не запускают тредов больше чем ядер.
Почему с помощью распарализации потоков можно получить выигрыш в скорости вычислений?
Потому что надо аккуратно программировать, не допускать переключения контекстов (не дергать ядро почем зря, а то с некоторых станется) и не запускать тредов больше, чем в системе есть ядер.
Тогда почему вообще вся ОС не асинхронная в одном потоке как Node JS?
Поздравляю вас с изобретением Windows 3.1. Вы наверное не застали, но эта ОС наглухо зависала вместе с приложением, если оно зависало.