본문 바로가기

락 프리(lock free)

1. 락 프리(lock free) 카테고리 설명 및 목차

본 카테고리에서는 여러 스레드가 공용 자원 (큐, 스택)을 사용함에 있어 이를 안전하게 사용하기 위한 여러 가지 방법 중 스레드를 block 시키지 않은 채 thread safety를 보장할 수 있는 방법인 락프리 알고리즘을 이용해 스택과 큐를 c++로 구현하고자 합니다.

 

락프리에 대한 설명 자체는 위키나 다른 블로그 등에서 다수 소개되고 있기 때문에 간단한 설명은 가능한 적게 할 것입니다. 대신 실제 구현함에 있어 알려진 문제들 (ABA 문제, 메모리 재사용 문제 등)을 직접 찾아보고, 어떻게 찾았나 공유하며 만들어진 자료구조의 성능을 테스트하는 등 다른 글에서 잘 다루지 않는 내용을 위주로 정리하려 합니다. 

학습, 분석한 내용을 바탕으로 정리한 글 이므로 실제 이론과 다르거나 잘못 분석한 내용이 있을 수 있으므로 논리적으로 문제가 있다면 댓글이나 메일을 통해 지적해주시면 감사하겠습니다.

 

  1. 목차
  2. 락프리 스택의 기본 구현 (참고코드 첨부 및 그 구현, 테스트 코드 작성)
  3. 락프리 스택의 문제 추론 (문제점 정리와 사고실험)
  4. 락프리 스택 기본 구현체의 문제 1 (ABA 문제 확인, 분석, 수정)
  5. 락프리 스택 기본 구현체의 문제 2 (메모리 할당 해제 문제)
  6. 락프리 큐의 기본 구현 (수도코드 첨부 및 그 구현, 테스트 코드 작성, 테스트 코드 수정을 통한 재사용 문제 발생 유도)
  7. 락프리 큐의 기본 구현체의 문제 1 (메모리 재사용 문제 확인, 분석, 수정)
  8. 락프리 스택 / 큐의 성능 측정 (성능 측정 방법, 테스트 코드 구현)
  9. 락프리 스택 / 큐의 성능 측정 결과 분석