ログイン

멀코 5-2장 배경이론

멀코 5-2장 배경이론
61問 • 2年前
  • ユーザ名非公開
  • 通報

    問題一覧

  • 1

    복잡한 자료구조는 atomic<T>를 이용하여 atomic하게 만들 수 없다. ( O / X )

    O

  • 2

    atomic<vector> a; 하면 어떠한 에러가 나는가?

    컴파일 에러

  • 3

    자료구조의 동작을 atomic하게 구현하는 것을 무엇이라고 하는가?

    동기화

  • 4

    동기화를 구현하기 위해서 기본 동기화 연산들이 무대기 혹은 무잠금일 필요는 없다. ( O / X )

    X

  • 5

    새로운 동기화 연산을 제공하는 가사의 객체를 무엇이라고 하는가?

    합의(Consensus)

  • 6

    decide 연산 하나만 제대로 돌아가면 합의 객체라고 정의한다. ( O / X )

    O

  • 7

    decide 연산의 핵심 2가지를 얘기하시오.

    decide는 모든 호출에 대해 같은 값을 반환한다., decide가 반환하는 값은 전달된 value 중 하나이다.

  • 8

    decide에서 높은 확률로 제일 처음 decide()를 호출한 쓰레드가 선택되는 이유는?

    두번째 호출한 애의 값을 쓰려면 첫번째 호출한 애가 기다려야 하기 때문이다.

  • 9

    이것은 합의 객체인가? 이유는?

    아니다. wait-free가 아니기 때문이다.

  • 10

    빈칸을 채우세요.

    CAS(&d_value, INIT, value); d_value;

  • 11

    atomic_int decide(atomic_int v) { return v; } 합의 수가 몇인 객체인가?

    합의 수가 1인 합의 객체

  • 12

    알고리즘의 모든 실행 가능한 경로를 이진 트리로 나타낼 수 있는 것을 뭐라고 부르는가?

    프로토콜

  • 13

    프로토콜은 실제 실행 시 어느 방향으로 진행할 지 정해져 있다. ( O / X )

    X

  • 14

    합의 수가 된다고 하려면 프로토콜에서 어느 방향으로 진행하더라도 올바른 결과가 나와야 한다. ( O / X )

    O

  • 15

    알고리즘이 복잡할수록 트리의 길이가 ( )

    길어진다.

  • 16

    제대로된 decide인가?

    아니다.

  • 17

    제대로된 decide인가?

    그렇다.

  • 18

    합의 수에서 이동할 떄만, 전체 실행 상태가 변경될 수 있다. ( O / X )

    O

  • 19

    이동이 없으면 상태를 변경할 수 없는 이유는?

    이동은 동기화 메모리를 읽고 쓰는 것이기 때문이다.

  • 20

    앞으로 어떠한 이동을 하더라도 결정 값의 변화가 없는 경우는 뭐라 하는가?

    일가(univalent) 상태

  • 21

    최종 결정 값이 결정되지 않은 상태는?

    이가(bivalent) 상태

  • 22

    현재 상태는 이가이고, 다음의 이동으로 무조건 일가 상태가 되는 것을 무엇이라고 하는가?

    임계(critical) 상태

  • 23

    두 개의 Child 중 하나만 일가 상태가 되어도 임계 상태이다. ( O / X )

    X

  • 24

    s1의 상태를 말하시오.

    초기 상태이자 이가 상태 중 임계 상태이다.

  • 25

    모든 2-스레드 합의 프로토콜의 초기상태는 이가이다. ( O / X )

    O

  • 26

    어떤 무대기 합의 프로토콜은 임계 상태가 존재하지 않을 수 있다. ( O / X )

    X

  • 27

    마지막 2가 노드가 존재하는 높이에 존재하는 모든 2가 노드는 임계상태이다. ( O / X )

    O

  • 28

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: read, B: write or read(Any) 일 때, 잘 돌아가는가?

    아니다. A가 읽었으면 B는 0이 나와야하고, A가 안읽었으면 B는 1이 나와야 하는데 이것을 알 도리가 없다. 따라서 이러한 알고리즘은 만들 수 없다.

  • 29

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: write(x1), B: write(x2) -> 서로 다른 메모리에 write 할 경우 가능한가?

    어느 순서로 썼는지 구분할 수 없다. 불가능하다.

  • 30

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: write(x1), B: write(x1) -> 서로 같은 메모리에 write 할 경우 가능한가?

    A의 write r을 B의 write r이 덮어 쓴 경우와 아닌 경우를 B는 구분할 수 없다. 따라서 불가능하다.

  • 31

    atomic 메모리의 read/write 만으로 두개의 스레드에서 합의 non-blocking으로 구현하는 것이 가능하다. ( O / X )

    X

  • 32

    2 Dequeuer QUEUE는 atomic 메모리로 구현 불가능한 이유는?

    atomic 메모리의 합의 수는 1이고, 2 Dequeuer QUEUE의 합의수는 적어도 2이기 때문이다. atomic 메모리의 합의 수가 적어도 2는 되어야 한다. 모순이어서 안된다.

  • 33

    atomic 메모리만 가지고 큐, 스택, 우선순위 큐 등의 무대기 구현을 작성할 수 없다. ( O / X )

    O

  • 34

    n개의 스레드에서 돌아가면 프로토콜은 n진 트리가 된다. ( O / X )

    O

  • 35

    wait-free queue의 합의 수는?

    2

  • 36

    배열로 구성되며 복수의 원소를 atomic하게 변경할 수 있는 객체는?

    다중 대입 객체

  • 37

    어떤 걸 사용해야 합의 수가 n인 객체를 만들 수 있는가?

    다중 대입 객체

  • 38

    다중 대입 객체는 아무도 안쓴다. ( O / X )

    O

  • 39

    하드웨어가 지원하는 동기화 연산의 한 종류로 특수 명령어가 반드시 필요한 것은?

    RMW(Read-Modify-Write) 연산

  • 40

    항등 함수가 아닌 함수를 지원할 때 그 RMW를 ( )이라고 한다.

    명백하지 않은(nontrivial)

  • 41

    임의의 명백하지 않은 RMW 연산은 합의 수가 최소한 ( )이다.

    2

  • 42

    원자적 메모리만을 사용해선 2개나 그 이상의 스레드에 대한 어떠한 명백하지 않은 RMW도 구현할 수 없다. ( O / X )

    O

  • 43

    '함수 집합 F는 모든 값 v와 F에 속하는 모든 함수 fi와 fj에 대해 다음이 성립하면 Common2라고 한다.' 다음이 무엇인지 설명하시오.

    fi와 fj는 교환이 가능하거나 : fi (fj (v)) = fj (fi (v)), 한 함수가 다른 함수를 덮어쓰는 경우 : fi (fj (v)) = fi (v) 이거나 fj (fi (v)) = fj(v)

  • 44

    Common2 RMW 연산의 특징은?

    합의 수 2를 갖는다., 최근의 프로세서들에서는 제거되는 추세이다.

  • 45

    Common2 RMW 레지스터의 합의 수가 2인 이유는?

    누가 먼저 실행했는지 알 수 없기 때문이다. 3 이상이 되려면 누가 실행했는지 알 수 있어야 한다.

  • 46

    CAS는 RMW연산이다. ( O / X )

    O

  • 47

    CAS의 합의 수는?

    무한대

  • 48

    적은 합의 수를 갖는 객체를 모아 큰 합의 수 객체를 구현할 수 있다. ( O / X )

    X

  • 49

    Arm CPU에서 CAS를 대체하는 것은? 풀네임과 약자 모두 쓰시오.

    LL-SC(Load Linked - Store Conditional)

  • 50

    어떠한 객체든 무대기 병렬객체로 변환시켜 주는 객체는?

    만능 객체

  • 51

    ( )개의 스레드에서 동작하는 만능객체는 합의 수 ( )이상의 객체만 있으면 구현 가능하다.

    n

  • 52

    만능의 정의는?

    클래스 C 객체들과 원자적 메모리로 모든 객체를 무대기 구현으로 변환하는 것이 가능하다면 클래스 C는 만능이다.

  • 53

    호출하고자 하는 원래 객체의 메소드와 그 입력값을 갖는 객체는?

    Invocation 객체

  • 54

    여러 메소드들의 결과 값의 타입을 압축한 객체는?

    Reponse

  • 55

    로그는 node의 링크드 리스트이다. ( O / X )

    O

  • 56

    빈칸을 채우시오.

    decide(&prefer) apply(current->invoc) apply(current->invoc)

  • 57

    빈칸을 채우시오.

    //prefer가 성공적으로 head에 추가 되었는지 검사 Node *before = tail.max(head); // Log의 head를 찾지만 다른 스레드와 겹쳐져서 잘 못 찾을 수도 있음 Node *after = before->decideNext->decide(&prefer); // before의 합의는 항상 유일하다! before->next = after; after->seq = before->seq + 1; // 여러 스레드가 같은 작업을 반복 할 수 있지만, 상관없다. head[i] = after; // 자신이 본 제일 앞의 head는 after니까 업데이트 시켜준다 // 이러지 않으면 동일한 합의 객체를 두 번 호출할 수 있다. // 운좋게 after가 prefer가 되면 성공이다!

  • 58

    무잠금 만능 구성의 구현의 트릭을 설명하시오.

    노드마다 합의 객체를 갖고 있다., 순차객체 A는 매 호출마다 새로 생성된다., 합의 객체로 인해 한 Node의 next node는 어떤 스레드에서도 유일하다는 것을 보장받는다.

  • 59

    여기서 announce에 대해 설명하시오.

    모든 스레드가 볼 수 있다. 혹시 계속 decide가 실패해서 헛돌고 있는 invok가 있는지 보는 것이다.

  • 60

    합의할 때 자기대신 우선순위가 높은 다른 스레드의 Node를 합의 한다. ( O / X )

    O

  • 61

    Help할 객체의 스레드를 유일하고 공평하게 결정할 수 있으면 기아를 막을 수 있다. ( O / X )

    O

  • 멀코 2장 멀티스레드 프로그래밍

    멀코 2장 멀티스레드 프로그래밍

    ユーザ名非公開 · 9問 · 2年前

    멀코 2장 멀티스레드 프로그래밍

    멀코 2장 멀티스레드 프로그래밍

    9問 • 2年前
    ユーザ名非公開

    멀코 3장 메모리 일관성

    멀코 3장 메모리 일관성

    ユーザ名非公開 · 41問 · 2年前

    멀코 3장 메모리 일관성

    멀코 3장 메모리 일관성

    41問 • 2年前
    ユーザ名非公開

    고법 2장 헌법

    고법 2장 헌법

    ユーザ名非公開 · 41問 · 2年前

    고법 2장 헌법

    고법 2장 헌법

    41問 • 2年前
    ユーザ名非公開

    고법 3장 근로계약

    고법 3장 근로계약

    ユーザ名非公開 · 42問 · 2年前

    고법 3장 근로계약

    고법 3장 근로계약

    42問 • 2年前
    ユーザ名非公開

    고법 4장 노동법의 역사

    고법 4장 노동법의 역사

    ユーザ名非公開 · 23問 · 2年前

    고법 4장 노동법의 역사

    고법 4장 노동법의 역사

    23問 • 2年前
    ユーザ名非公開

    고법 6장 직장내 성희롱

    고법 6장 직장내 성희롱

    ユーザ名非公開 · 31問 · 2年前

    고법 6장 직장내 성희롱

    고법 6장 직장내 성희롱

    31問 • 2年前
    ユーザ名非公開

    멀코 4장 동기화 연산과 cas

    멀코 4장 동기화 연산과 cas

    ユーザ名非公開 · 20問 · 2年前

    멀코 4장 동기화 연산과 cas

    멀코 4장 동기화 연산과 cas

    20問 • 2年前
    ユーザ名非公開

    멀코 5장 non-blocking 알고리즘 - list

    멀코 5장 non-blocking 알고리즘 - list

    ユーザ名非公開 · 84問 · 2年前

    멀코 5장 non-blocking 알고리즘 - list

    멀코 5장 non-blocking 알고리즘 - list

    84問 • 2年前
    ユーザ名非公開

    1. 컴퓨터 그래픽스 개요 (컴그)

    1. 컴퓨터 그래픽스 개요 (컴그)

    ユーザ名非公開 · 34問 · 2年前

    1. 컴퓨터 그래픽스 개요 (컴그)

    1. 컴퓨터 그래픽스 개요 (컴그)

    34問 • 2年前
    ユーザ名非公開

    2. 2차원 그래픽스의 기본 요소 (컴그)

    2. 2차원 그래픽스의 기본 요소 (컴그)

    ユーザ名非公開 · 30問 · 2年前

    2. 2차원 그래픽스의 기본 요소 (컴그)

    2. 2차원 그래픽스의 기본 요소 (컴그)

    30問 • 2年前
    ユーザ名非公開

    3. 2차원 그래픽스 변환 (컴그)

    3. 2차원 그래픽스 변환 (컴그)

    ユーザ名非公開 · 15問 · 2年前

    3. 2차원 그래픽스 변환 (컴그)

    3. 2차원 그래픽스 변환 (컴그)

    15問 • 2年前
    ユーザ名非公開

    4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)

    4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)

    ユーザ名非公開 · 16問 · 2年前

    4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)

    4. 2차원 그래픽스의 윈도우와 뷰포트 (컴그)

    16問 • 2年前
    ユーザ名非公開

    멀코 6장. 병렬 알고리즘 - QUEUE

    멀코 6장. 병렬 알고리즘 - QUEUE

    ユーザ名非公開 · 26問 · 2年前

    멀코 6장. 병렬 알고리즘 - QUEUE

    멀코 6장. 병렬 알고리즘 - QUEUE

    26問 • 2年前
    ユーザ名非公開

    멀코 7장. STACK, SKIP-LIST

    멀코 7장. STACK, SKIP-LIST

    ユーザ名非公開 · 42問 · 2年前

    멀코 7장. STACK, SKIP-LIST

    멀코 7장. STACK, SKIP-LIST

    42問 • 2年前
    ユーザ名非公開

    멀코 8장. 병렬 라이브러리

    멀코 8장. 병렬 라이브러리

    ユーザ名非公開 · 77問 · 2年前

    멀코 8장. 병렬 라이브러리

    멀코 8장. 병렬 라이브러리

    77問 • 2年前
    ユーザ名非公開

    고법 7장. 임금의 이해

    고법 7장. 임금의 이해

    ユーザ名非公開 · 46問 · 2年前

    고법 7장. 임금의 이해

    고법 7장. 임금의 이해

    46問 • 2年前
    ユーザ名非公開

    고법 9장. 인사명령과 징계

    고법 9장. 인사명령과 징계

    ユーザ名非公開 · 21問 · 2年前

    고법 9장. 인사명령과 징계

    고법 9장. 인사명령과 징계

    21問 • 2年前
    ユーザ名非公開

    고법 11장. 노동조합법

    고법 11장. 노동조합법

    ユーザ名非公開 · 45問 · 2年前

    고법 11장. 노동조합법

    고법 11장. 노동조합법

    45問 • 2年前
    ユーザ名非公開

    컴그 7장. 3차원 객체의 모델링

    컴그 7장. 3차원 객체의 모델링

    ユーザ名非公開 · 13問 · 2年前

    컴그 7장. 3차원 객체의 모델링

    컴그 7장. 3차원 객체의 모델링

    13問 • 2年前
    ユーザ名非公開

    컴그 8장. 은면의 제거

    컴그 8장. 은면의 제거

    ユーザ名非公開 · 9問 · 2年前

    컴그 8장. 은면의 제거

    컴그 8장. 은면의 제거

    9問 • 2年前
    ユーザ名非公開

    問題一覧

  • 1

    복잡한 자료구조는 atomic<T>를 이용하여 atomic하게 만들 수 없다. ( O / X )

    O

  • 2

    atomic<vector> a; 하면 어떠한 에러가 나는가?

    컴파일 에러

  • 3

    자료구조의 동작을 atomic하게 구현하는 것을 무엇이라고 하는가?

    동기화

  • 4

    동기화를 구현하기 위해서 기본 동기화 연산들이 무대기 혹은 무잠금일 필요는 없다. ( O / X )

    X

  • 5

    새로운 동기화 연산을 제공하는 가사의 객체를 무엇이라고 하는가?

    합의(Consensus)

  • 6

    decide 연산 하나만 제대로 돌아가면 합의 객체라고 정의한다. ( O / X )

    O

  • 7

    decide 연산의 핵심 2가지를 얘기하시오.

    decide는 모든 호출에 대해 같은 값을 반환한다., decide가 반환하는 값은 전달된 value 중 하나이다.

  • 8

    decide에서 높은 확률로 제일 처음 decide()를 호출한 쓰레드가 선택되는 이유는?

    두번째 호출한 애의 값을 쓰려면 첫번째 호출한 애가 기다려야 하기 때문이다.

  • 9

    이것은 합의 객체인가? 이유는?

    아니다. wait-free가 아니기 때문이다.

  • 10

    빈칸을 채우세요.

    CAS(&d_value, INIT, value); d_value;

  • 11

    atomic_int decide(atomic_int v) { return v; } 합의 수가 몇인 객체인가?

    합의 수가 1인 합의 객체

  • 12

    알고리즘의 모든 실행 가능한 경로를 이진 트리로 나타낼 수 있는 것을 뭐라고 부르는가?

    프로토콜

  • 13

    프로토콜은 실제 실행 시 어느 방향으로 진행할 지 정해져 있다. ( O / X )

    X

  • 14

    합의 수가 된다고 하려면 프로토콜에서 어느 방향으로 진행하더라도 올바른 결과가 나와야 한다. ( O / X )

    O

  • 15

    알고리즘이 복잡할수록 트리의 길이가 ( )

    길어진다.

  • 16

    제대로된 decide인가?

    아니다.

  • 17

    제대로된 decide인가?

    그렇다.

  • 18

    합의 수에서 이동할 떄만, 전체 실행 상태가 변경될 수 있다. ( O / X )

    O

  • 19

    이동이 없으면 상태를 변경할 수 없는 이유는?

    이동은 동기화 메모리를 읽고 쓰는 것이기 때문이다.

  • 20

    앞으로 어떠한 이동을 하더라도 결정 값의 변화가 없는 경우는 뭐라 하는가?

    일가(univalent) 상태

  • 21

    최종 결정 값이 결정되지 않은 상태는?

    이가(bivalent) 상태

  • 22

    현재 상태는 이가이고, 다음의 이동으로 무조건 일가 상태가 되는 것을 무엇이라고 하는가?

    임계(critical) 상태

  • 23

    두 개의 Child 중 하나만 일가 상태가 되어도 임계 상태이다. ( O / X )

    X

  • 24

    s1의 상태를 말하시오.

    초기 상태이자 이가 상태 중 임계 상태이다.

  • 25

    모든 2-스레드 합의 프로토콜의 초기상태는 이가이다. ( O / X )

    O

  • 26

    어떤 무대기 합의 프로토콜은 임계 상태가 존재하지 않을 수 있다. ( O / X )

    X

  • 27

    마지막 2가 노드가 존재하는 높이에 존재하는 모든 2가 노드는 임계상태이다. ( O / X )

    O

  • 28

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: read, B: write or read(Any) 일 때, 잘 돌아가는가?

    아니다. A가 읽었으면 B는 0이 나와야하고, A가 안읽었으면 B는 1이 나와야 하는데 이것을 알 도리가 없다. 따라서 이러한 알고리즘은 만들 수 없다.

  • 29

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: write(x1), B: write(x2) -> 서로 다른 메모리에 write 할 경우 가능한가?

    어느 순서로 썼는지 구분할 수 없다. 불가능하다.

  • 30

    atomic 메모리로 2 스레드 합의 문제를 해결 할 수 있다. 명제 중 A: write(x1), B: write(x1) -> 서로 같은 메모리에 write 할 경우 가능한가?

    A의 write r을 B의 write r이 덮어 쓴 경우와 아닌 경우를 B는 구분할 수 없다. 따라서 불가능하다.

  • 31

    atomic 메모리의 read/write 만으로 두개의 스레드에서 합의 non-blocking으로 구현하는 것이 가능하다. ( O / X )

    X

  • 32

    2 Dequeuer QUEUE는 atomic 메모리로 구현 불가능한 이유는?

    atomic 메모리의 합의 수는 1이고, 2 Dequeuer QUEUE의 합의수는 적어도 2이기 때문이다. atomic 메모리의 합의 수가 적어도 2는 되어야 한다. 모순이어서 안된다.

  • 33

    atomic 메모리만 가지고 큐, 스택, 우선순위 큐 등의 무대기 구현을 작성할 수 없다. ( O / X )

    O

  • 34

    n개의 스레드에서 돌아가면 프로토콜은 n진 트리가 된다. ( O / X )

    O

  • 35

    wait-free queue의 합의 수는?

    2

  • 36

    배열로 구성되며 복수의 원소를 atomic하게 변경할 수 있는 객체는?

    다중 대입 객체

  • 37

    어떤 걸 사용해야 합의 수가 n인 객체를 만들 수 있는가?

    다중 대입 객체

  • 38

    다중 대입 객체는 아무도 안쓴다. ( O / X )

    O

  • 39

    하드웨어가 지원하는 동기화 연산의 한 종류로 특수 명령어가 반드시 필요한 것은?

    RMW(Read-Modify-Write) 연산

  • 40

    항등 함수가 아닌 함수를 지원할 때 그 RMW를 ( )이라고 한다.

    명백하지 않은(nontrivial)

  • 41

    임의의 명백하지 않은 RMW 연산은 합의 수가 최소한 ( )이다.

    2

  • 42

    원자적 메모리만을 사용해선 2개나 그 이상의 스레드에 대한 어떠한 명백하지 않은 RMW도 구현할 수 없다. ( O / X )

    O

  • 43

    '함수 집합 F는 모든 값 v와 F에 속하는 모든 함수 fi와 fj에 대해 다음이 성립하면 Common2라고 한다.' 다음이 무엇인지 설명하시오.

    fi와 fj는 교환이 가능하거나 : fi (fj (v)) = fj (fi (v)), 한 함수가 다른 함수를 덮어쓰는 경우 : fi (fj (v)) = fi (v) 이거나 fj (fi (v)) = fj(v)

  • 44

    Common2 RMW 연산의 특징은?

    합의 수 2를 갖는다., 최근의 프로세서들에서는 제거되는 추세이다.

  • 45

    Common2 RMW 레지스터의 합의 수가 2인 이유는?

    누가 먼저 실행했는지 알 수 없기 때문이다. 3 이상이 되려면 누가 실행했는지 알 수 있어야 한다.

  • 46

    CAS는 RMW연산이다. ( O / X )

    O

  • 47

    CAS의 합의 수는?

    무한대

  • 48

    적은 합의 수를 갖는 객체를 모아 큰 합의 수 객체를 구현할 수 있다. ( O / X )

    X

  • 49

    Arm CPU에서 CAS를 대체하는 것은? 풀네임과 약자 모두 쓰시오.

    LL-SC(Load Linked - Store Conditional)

  • 50

    어떠한 객체든 무대기 병렬객체로 변환시켜 주는 객체는?

    만능 객체

  • 51

    ( )개의 스레드에서 동작하는 만능객체는 합의 수 ( )이상의 객체만 있으면 구현 가능하다.

    n

  • 52

    만능의 정의는?

    클래스 C 객체들과 원자적 메모리로 모든 객체를 무대기 구현으로 변환하는 것이 가능하다면 클래스 C는 만능이다.

  • 53

    호출하고자 하는 원래 객체의 메소드와 그 입력값을 갖는 객체는?

    Invocation 객체

  • 54

    여러 메소드들의 결과 값의 타입을 압축한 객체는?

    Reponse

  • 55

    로그는 node의 링크드 리스트이다. ( O / X )

    O

  • 56

    빈칸을 채우시오.

    decide(&prefer) apply(current->invoc) apply(current->invoc)

  • 57

    빈칸을 채우시오.

    //prefer가 성공적으로 head에 추가 되었는지 검사 Node *before = tail.max(head); // Log의 head를 찾지만 다른 스레드와 겹쳐져서 잘 못 찾을 수도 있음 Node *after = before->decideNext->decide(&prefer); // before의 합의는 항상 유일하다! before->next = after; after->seq = before->seq + 1; // 여러 스레드가 같은 작업을 반복 할 수 있지만, 상관없다. head[i] = after; // 자신이 본 제일 앞의 head는 after니까 업데이트 시켜준다 // 이러지 않으면 동일한 합의 객체를 두 번 호출할 수 있다. // 운좋게 after가 prefer가 되면 성공이다!

  • 58

    무잠금 만능 구성의 구현의 트릭을 설명하시오.

    노드마다 합의 객체를 갖고 있다., 순차객체 A는 매 호출마다 새로 생성된다., 합의 객체로 인해 한 Node의 next node는 어떤 스레드에서도 유일하다는 것을 보장받는다.

  • 59

    여기서 announce에 대해 설명하시오.

    모든 스레드가 볼 수 있다. 혹시 계속 decide가 실패해서 헛돌고 있는 invok가 있는지 보는 것이다.

  • 60

    합의할 때 자기대신 우선순위가 높은 다른 스레드의 Node를 합의 한다. ( O / X )

    O

  • 61

    Help할 객체의 스레드를 유일하고 공평하게 결정할 수 있으면 기아를 막을 수 있다. ( O / X )

    O