반응형 wait-free2 [05주차] 동기화 연산 & CAS - Lock-free 자료구조 : 여러 개의 쓰레드에서 동시에 호출했을 때에도 정해진 단위 시간마다 적어도 한 개의 호출이 완료되는 알고리즘 : Non-blocking이 보장되어야 함 : 알고리즘 내에 Lock이 있으면 당연히 Lock-free X, Lock이 없다고 해도 무조건 Lock-free인 것은 아님 : Lock이 존재하는 경우 다른 쓰레드를 실행할 수 없어 싱글 쓰레드와 다를 바가 없음 → wait-free를 유지하며, 메모리로 Atomic Memory를 만들 수 있는 알고리즘 존재? : 존재, 이 강의에서 생략. → wait-free를 유지하며, 기존 씽글 스레드 자료구조도 Atomic Memory를 사용해 멀티쓰레드 자료구조로 변환 가능? : 불가능하다.. 2024. 4. 24. [04주차] 메모리 일관성 - CPU 주의점 : 저번 시간 상호 배제에 이어 메모리 일관성 문제도 고려해야 함 : 지금까지 프로그램은 공유 메모리에 대한 접근(읽기/쓰기)을 atomic하다고 가정함 → 컴파일러가 제대로 기계어로 번역했다면 → atomic : 메모리의 접근이 순간적으로 행해지며, 서로 겹치지 않고 실행 결과 순서가 정해지면, 모든 쓰레드에서 같은 순서로 보임 → 그러나 PC에서의 메모리 접근은 atomic이 아님 (메모리에 쓴 순서대로 메모리의 내용이 관측되지 않음) : 0번 쓰레드도 false를 읽고 1번도 false를 읽음 : 저번 시간에 했던 피터슨 알고리즘에서 std::atomic_thread_fence(std::memory_order_seq_cst)를 제외한 경우 아래의 결과처럼.. 2024. 4. 18. 이전 1 다음 728x90 반응형