Erlang이 동시 / 병렬화 / 분산 상황에서 실행되도록 특별히 개발되었다는 사실 외에,이를 가능하게하는 두 가지 주요 기술은 다음과 같습니다.
부작용 없음 :
즉, 함수에 실행할 데이터를 제공 할 때 매우 엄격한 경우를 제외하고는 시스템 / 실행 프로세스의 다른 항목에 영향을 미치지 않습니다. 즉, 한 번에 300 번 동시에 함수를 실행하면 300 번의 함수 실행 중 어느 것도 다른 함수에 영향을 미치지 않습니다.
부작용을 방지하기위한 구현 기술을 "불변성 (immutability)"이라하며, 이는 대략 변경되지 않을 수 있음을 의미한다. 이는 변수를 생성하자마자 해당 변수의 값이 수정되지 않을 수 있음을 의미합니다. Erlang은 "단일 할당"으로이 동작을 구현하므로 변수에 값을 할당 한 후에는 값을 다시 할당 할 수 없습니다.
X = 1.
X = 2. // This is not a valid operation
이렇게하면 코드가 실수로 X의 값을 변경하여 경쟁 조건을 유발하지 않도록 할 수 있으므로 본질적으로 스레드 안전하고 동시 사용이 쉽지 않습니다. 이것은 소프트웨어 언어에서 매우 드문 일이며 Erlang이 동시 실행에 매우 적합하도록 관리하는 가장 큰 방법입니다.
배우 모델 :
이는 동시 처리의 구현 및 관리를 개발자에게 매우 간단하게 보여주는 특정 모델링 방법입니다. Wikipedia에서 직접 (http://en.wikipedia.org/wiki/Actor_model) :
액터 모델은 모든 것이 액터라는 철학을 채택합니다. 이것은 모든 객체 지향 프로그래밍 언어에서 사용되는 객체 철학과 유사하지만 액터 모델은 본질적으로 동시적인 반면 객체 지향 소프트웨어는 일반적으로 순차적으로 실행된다는 점이 다릅니다. 액터는 수신 한 메시지에 응답하여 동시에 다음과 같은 작업을 수행 할 수있는 계산 엔티티입니다. 유한 액수의 메시지를 다른 액터에게 보냅니다. 한정된 수의 새로운 배우를 만듭니다. 다음에받는 메시지에 사용할 동작을 지정하십시오. 위의 동작에 대한 가정 된 순서는 없으며 병렬로 수행 할 수 있습니다. 발신자와 발신 통신을 분리하는 것은 비동기 통신 및 제어 구조를 메시지 전달 패턴으로 사용할 수있는 Actor 모델의 근본적인 발전이었습니다.