작성
·
206
답변 4
0
0
아 후반부를 말씀하시는거군요 ㅎㅎㅎ
강의를 찍은지 너무 오래돼서 시간대를 말씀해주시면 도움이 됩니다.
저 부분은 A에선 answer=123, complete=true 순서로 설정하고
B에선 if (complete) cw(answer)을 출력하는데
이론상 멀티쓰레드 환경에서 배리어가 없으면
answer가123이 아닌 0으로 출력될 수도 있다는 내용입니다.
(분명 A에선 answer를 123 설정한 다음에 완료 신호인 complete=true로 함에도!)
그런데 정말 이론적으로만 그렇고 인텔 환경에선 테스트를 해봐야겠지만 잘 일어나지 않을겁니다.
0
아니요 이해는 정확히 됐는데요. 2번째 예제에서 설명이 조금 부족한 거 같아요.
메모리 블락을 치면 순서대로 하겠다는 알겠는데요.
Task A, Task B를 동시에 진행한다고 해도. 쓰레드 B가 먼저 실행되면 false가 나는 것은 어쩔 수 없어서...
왜 이런 실험을 하는지 이해가 안되서 main문 예제가 있어야 할 것 같다는 말이었습니다.
0
main이 항상 2개 실행되는 것은 아니고,
Task을 이용하면 멀티쓰레드 환경이 됩니다.
메모리 배리어에 대한 내용이 잘 이해가 안가신다면
이전 수업 [쓰레드] [캐시] [메모리 배리어]를 묶어서 다시 복습해보시기 바랍니다.