책에서 CPU 작업량이 많은 코드에는 스레드를 사용하여 처리하고,
I/O 대기시간이 많은 코드에서는 비동기 I/O를 사용하라고 적혀있었습니다.
그런데 제가 알기로는,
비동기 I/O도 내부적인 구현은 스레드와 같은 개념이 아닌가요?
예를들어서 C# 코드의 비동기 메서드인 async 키워드는 Task를 리턴하는 것으로 알고 있습니다.
Task는 내부적으로 ThreadPool의 자유 스레드를 이용하여 로직을 처리하는 방식으로 알고 있는데,
사실상 속을 까놓고 보면 비동기와 스레드의 사용은 같은 개념이 아닌가요?
(비동기 처리가 유명한 node.js도 내부에 스레드 풀을 사용한다고 알고 있습니다)
아니면 제가 놓치고 있는 부분이 있는지 궁금합니다!