본 카테고리에서는 여러 스레드가 공용 자원 (큐, 스택)을 사용함에 있어 이를 안전하게 사용하기 위한 여러 가지 방법 중 스레드를 block 시키지 않은 채 thread safety를 보장할 수 있는 방법인 락프리 알고리즘을 이용해 스택과 큐를 c++로 구현하고자 합니다.
락프리에 대한 설명 자체는 위키나 다른 블로그 등에서 다수 소개되고 있기 때문에 간단한 설명은 가능한 적게 할 것입니다. 대신 실제 구현함에 있어 알려진 문제들 (ABA 문제, 메모리 재사용 문제 등)을 직접 찾아보고, 어떻게 찾았나 공유하며 만들어진 자료구조의 성능을 테스트하는 등 다른 글에서 잘 다루지 않는 내용을 위주로 정리하려 합니다.
학습, 분석한 내용을 바탕으로 정리한 글 이므로 실제 이론과 다르거나 잘못 분석한 내용이 있을 수 있으므로 논리적으로 문제가 있다면 댓글이나 메일을 통해 지적해주시면 감사하겠습니다.
- 목차
- 락프리 스택의 기본 구현 (참고코드 첨부 및 그 구현, 테스트 코드 작성)
- 락프리 스택의 문제 추론 (문제점 정리와 사고실험)
- 락프리 스택 기본 구현체의 문제 1 (ABA 문제 확인, 분석, 수정)
- 락프리 스택 기본 구현체의 문제 2 (메모리 할당 해제 문제)
- 락프리 큐의 기본 구현 (수도코드 첨부 및 그 구현, 테스트 코드 작성, 테스트 코드 수정을 통한 재사용 문제 발생 유도)
- 락프리 큐의 기본 구현체의 문제 1 (메모리 재사용 문제 확인, 분석, 수정)
- 락프리 스택 / 큐의 성능 측정 (성능 측정 방법, 테스트 코드 구현)
- 락프리 스택 / 큐의 성능 측정 결과 분석
'락 프리(lock free)' 카테고리의 다른 글
4. 락프리 스택 기본 구현체의 문제 1 (ABA 문제 확인, 수정) (0) | 2023.09.21 |
---|---|
3. 락프리 스택의 문제 추론 (문제점 정리와 사고실험, 로깅) (1) | 2023.09.21 |
2. 락프리 스택의 기본 구현 (참고코드 첨부 및 그 구현, 테스트 코드 작성) (1) | 2023.09.21 |