현재 프로그래밍 언어의 설계 단계에 있으며 동시성 측면에 대해 현재 생각하고 있습니다. consistency model을 알아야합니다. 즉,이 언어로 프로그래밍 된 동시 프로세스로 데이터를 처리하는 방법입니다. 나는 일관성 모델이 좋은 스케일링을 허용만큼, 사용 편의성 성능 이상을 선호동시 프로그래밍 언어의 일관성 모델 선택
-
가
- I 차단 또는 동적 요구하는 일관성 모델을 사용할 수 없습니다
두 가지 중요한 기준이 있습니다 메모리 할당.
내 두 후보는 바로 지금 비 차단 한쪽에 소프트웨어 트랜잭션 메모리, 그리고 복사라 얼랑을 공유하지 않고 의미를 메시지 전달.
나는 특히 사용의 용이성에 대해 걱정하기 때문에이 두 모델 각각에 대한 주요 주장을 제시 할 것입니다.
STM의 경우 사용자는 어떤 클래스의 멤버가 원자 적으로 변이하고 원자 코드 섹션을 정확하게 구분해야 하는지를 이해해야합니다. 이것들은 정의되지 않은 횟수만큼 반복 될 수 있도록 작성되어야하며, I/O를 수행하지 않을 수도 있고, 일부 외국 함수를 호출하지 않을 수도 있습니다. 필자는 경험이없는 프로그래머가 이것을 쉽게 볼 수 있습니다.
Erlang 스타일의 공유 없음 동시성은 매력적이지만 catch가 있습니다. 실시간 프로세스는 메모리 할당을 수행 할 수 없기 때문에 실시간으로 프로세스가 객체를 복사 할 수 없으므로 객체는 하나에서 "이동"해야합니다 큐를 통해 다른 프로세스로 전송할 수 있습니다. 사용자는 하나의 실시간 프로세스에 객체에 대한 참조가 두 개있는 경우 객체를 다른 프로세스로 전송하면 해당 참조가 모두 지워진다는 사실을 알아야합니다. 이 포인터는 사용 시점에 null 일 수도 있고 아닐 수도있는 약한 포인터와 비슷합니다. 놀라운 일입니다.
필자는 이해하기 쉽고 자연스럽게 분산 시스템으로 확장되기 때문에 필자는 두 번째 모델을 선호합니다.
무엇이 좋습니다?
- 비 차단 소프트웨어 트랜잭션 메모리?
- 실시간 제약 조건이있는 얼랑 스타일의 동시성?
- 다른 건 제가 고려하지 않았습니까?