(thread 1) (thread 2)
while(x==0){} y = 10 ;
print y; x = 1;
이 코드는 메모리 배리어가 없어서 의도하지 않는 동작을 실행하게 된다고해서
__asm mfence랑 volatile 이 필요하다는데
의도하지 않은 동작이란게 뭘 말하는 거고 volatile랑 mfence 넣어서 어떻게 해결한다는 거야? ㅠ
(thread 1) (thread 2)
while(x==0){} y = 10 ;
print y; x = 1;
이 코드는 메모리 배리어가 없어서 의도하지 않는 동작을 실행하게 된다고해서
__asm mfence랑 volatile 이 필요하다는데
의도하지 않은 동작이란게 뭘 말하는 거고 volatile랑 mfence 넣어서 어떻게 해결한다는 거야? ㅠ
과제중이냐
연산 순서를 강제한다고 생각하면 됨 말 그대로 메모리 배리어라서 다른 애가 뭐 하고 있으면 메모리 접근을 막음 volatile은 컴파일러한테 이 값 내가 안 하더라도 다른 애가 바꿀 수 있어요~ 라고 알랴줌