• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

메모리 베리어에 관하여 궁금한 것이 있습니다.

22.02.02 17:40 작성 조회수 230

0

메모리 베리어 강의의 막바지에 예제에서

 

void ()

{

     _answer = 123;

      Thread.MemoryBarrier();

     _complete = true;

      Thread.MemoryBarrier();

}

 

이런 코트가 있고 여기서 왜 메모리 베리어가 두 개가 있냐하면

_answer에 값을 변경하고 배리어를 통해 메모리에 써주고

_complete = true도 변경하고 배리어를 통해 메모리에 써주기 때문에 두 번 들어갔다고 설명을 하셨는데요. 여기서 문득 궁금해지는게 만약에 

_answer = 123;

_complete = true;

Thread.MemoryBarrier();

이런식으로 변경을 위로 몰고  배리어를 한번만 호출하면

위에 변경사항이 모두 메모리에 써져 기존과 같은 결과의 코트가 되는것인가요? 아니면 바로 위의 최근 것만 램에 저장이 바로 되어 결과가 다른 코드가 되는 것인가요?

답변 1

답변을 작성해보세요.

0

변경을 위로 몰아도 동일한 결과가 나타납니다.
(배리어 기준 위/아래가 중요)
사실 배리어와 관련된 부분은 이론적으로만 알면 되고
실제로 intel 등의 환경에서는 테스트조차 안 되는 경우가 많습니다.