사실 지금껏 아무 생각없이 감으로 비동기와 멀티스레딩을 구분해서 썼는데 최근 글들 보니까 이 둘간의 적절한 사용에 의문이 생김.

지금 상기해보면 확정적인 수의 작업을 동시에 실행하지만 성능향상은 기대하지 않을 때 예를 들어 파일스트림을 읽거나 쓸 때 비동기를 썼고

불확정적인 수의 루틴을 동시에 실행하거나 성능향상을 기대할 때 예를 들면 스레드 풀을 쓸 수준 이상이 될 때 쓰레드를 생성해서 썼던 거 같거든.


근데 문득 내가 잘 이해하고 적재적소에 잘 쓰고 있는 건가 의심이 됨. 비동기와 멀티스레드의 실제적인 동작 차이도 잘 모르겠고 막 헷갈리노.

비동기는 멀티스레드로 구현됨? 아님 서로 독립적인 거임?

멀티스레드 동작이 비동기적인 거 아님? 왜 비동기를 따로 구분해서 쓰는 거임? 간결함?

기존에 멀티스레드로 작성된 코드를 비동기로 완전히 대체했을 때 혹은 그 반대를 하면 문제점이 발생하기도 하나?