단순한 동시 프로그램이 직관을 거스르다
2025-01-18
겉보기에는 간단한 동시 프로그램에서 두 프로세스가 변수 'n'을 각각 10번 증가시키는 경우, 모델 검사기를 사용하여 분석했을 때 놀라운 결과가 나타났습니다. 직관적으로 'n'의 최종 값은 10과 20 사이가 되어야 합니다. 그러나 프로세스의 극단적인 인터리빙으로 인해 'n'이 2가 되었습니다. 이 동작을 재현하려고 Go 프로그램을 작성했지만 실패했으며, 이는 실제로 이러한 극단적인 인터리빙이 드물다는 것을 시사합니다. 이 예는 동시 프로그래밍의 복잡성과 직관으로는 이해할 수 없는 특성을 보여줍니다.
개발
직관에 반하는 동작