동시성과 병렬성이 갖는 관계를 요약하자면, 동시 계산은 결과의 정확도를 해치지 않는 선에서 병렬화할 수 있지만, 동시성 그 자체는 병렬성을 담보하지 않는다는 것이다. 병렬성 역시 그 자체로는 동시성을 담보하지 않는다. 파이프라이닝 처리 기법 등을 이용해 의미론적 동시성이 없는 프로그램을 여러 개의 병렬 구성 요소로 분해하는 방법을 채택한 최적화 기법을 흔히 볼 수 있다. 단일 명령-다중 데이터(SIMD) 연산이 그렇고, 분할 정복(divide and conquer) 전략(나중에 더 자세히 설명하겠다)이 이에 해당한다.
유닉스 전문가이자 Go 언어의 창시자 중 한 명으로 유명한 롭 파이크는 “동시성은 여러 가지를 한 번에 다루는 것이지만, 병렬성은 여러 가지 일을 동시에 하는 것”1이라고 지적한 바 있다. 프로그램의 동시성은 작성된 프로그래밍 언어와 코드에 크게 좌우되지만, 병렬성은 프로그램의 실제 실행 환경에 더 큰 영향을 받는다. 싱글 코어 CPU만으로는 동시성은 달성할 수 있어도 병렬성은 달성할 수 없다. 하지만 동시성과 병렬성 모두, 동시에 두 가지 이상의 일이 일어날 수 있다는 점에서 고전적인 순차 모형을 넘어선 것이라 할 수 있다.