2011-02-24 4 views
4

3 가지 동시성이 있다고 들었습니다.무엇이 결정적 동시성 *입니까?

  1. 결정적 동시성
  2. 메시지 전달 동시성
  3. 공유 상태 동시성

내가 아는 # 2 (= 배우 모델) 및 # 3 (= 일반 스레딩),하지만 # 1 . 그게 뭐야?

답변

4

결정 론적 동시성은이 모델에서 작성된 프로그램이 다음과 같은 속성을 갖는 동시 프로그래밍 모델입니다. 주어진 입력 세트에 대해 프로그램의 출력 값은 모든 실행 스케줄에 대해 동일합니다. 즉, 프로그램의 출력은 프로그램의 입력에만 의존합니다.

이 속성을 보장하는 방법이 있습니다. 한 가지 방법은 변수를 초기화 할 필요가 없지만 한 번만 할당 할 수있는 소위 단일 할당 프로그래밍입니다. 초기화되지 않은 변수 읽기는 값이 할당 될 때까지 멈 춥니 다 (가능하면 다른 스레드에 의해). 모차르트 프로그래밍 언어는이를 지원합니다.

또 다른 방법은 소유권 분석을 사용하여 어떤 스레드가 다른 참조를 소유하고 있는지 확인하고 2 개의 스레드가 동일한 '시간'에 참조에 쓰지 않도록 보장하기위한 것입니다. 따라서 데이터 경쟁이 없습니다.

+0

그것은 분명히 coroutine과 관계가 없다. :) – Eonil

+0

아니오, 동시성이란 여러 계산이 병렬로 발생합니다. 그러나 단일 할당 프로그래밍과 같은 결정 론적 동시성 모델에서 코 루틴을 사용할 수 있습니다. – axel22

0

이전에이 용어를들은 적이 없지만 coroutines을 염두에 두어야합니다. 특정 순간에 하나의 루틴 만 실행된다는 의미에서 "진정한"동시성을 제공하지는 않지만 상호 작용하는 루틴의 그룹은 서로를 기다릴 필요없이 모두 진행될 수 있다는 점에서 동시 적입니다. 끝.

+0

나는 그것도 coroutine이라고 추측하고있다. 그러나 나는 확신 할 수 없다. ... – Eonil