병렬 프로그래밍은 Parallel.For 같이 프로그래머가 직접 코딩하는 것만 의미하는게 아니라
멀티스레드를 OS가 처리할때 실제 CPU가 여러개 사용되는 것도 의미하나요?
만약 그렇다면 멀티스레드로 코딩하는걸 병렬 프로그래밍이라고 말할 수 있나요?
근데 병렬 기준이 여러개의 CPU를 사용하는거라면 멀티스레드로 코딩하는걸 병렬 프로그래밍이라고 할 수 없지 않나요?
병렬 프로그래밍은 Parallel.For 같이 프로그래머가 직접 코딩하는 것만 의미하는게 아니라
멀티스레드를 OS가 처리할때 실제 CPU가 여러개 사용되는 것도 의미하나요?
만약 그렇다면 멀티스레드로 코딩하는걸 병렬 프로그래밍이라고 말할 수 있나요?
근데 병렬 기준이 여러개의 CPU를 사용하는거라면 멀티스레드로 코딩하는걸 병렬 프로그래밍이라고 할 수 없지 않나요?
난 갠적으로 병렬성인지 동시성인지 비동기가 스레드가 어쩌구 겁내 따지는거 당최 왜그러는건지 잘 모르겟음. 나같은 응용개발자 나부렝이들은 아무신경안써도 이미 죄다 Task같은걸로 추상화된거 적당히 잘 써먹기만 하면 되는걸, 신경쓸 이유도 없고 괜히 신경 써서도 안됨.
병렬성을 고려한 프로그래밍을 했다면 논리적으로 멀티프로세싱으로 인한 메모리 충돌 등의 문제가 없으며 블로킹 등의 낭비가 없도록 잘 짜두면 되는거고, 하드웨어 레벨에서 실제 물리적으로 서로다른 CPU코어를 활용했는지? 아니면 스레드만다른지? 혹은그마저도 경량스레드로 묶여있는지? 따위의 결과적인 현상은 그냥 런타임의 여건에 맡기면 되는거잖아.
흠 CPU에서 놀지말고 아예 셰이더, gpgpu같은거라면 의심의 여지없이 "병렬프로그래밍을 한다"라고 볼수있을듯