프로젝트 목록
병렬 처리·자료구조 프로젝트 · 2025.03–04

Concurrency & Lock-free Structures

스레드 동기화, 병렬 작업 분배와 CAS 기반 연결 리스트를 구현하며 동시성의 조건과 한계를 살펴본 프로젝트입니다.

C++pthreadstd::atomicCASParallel Quicksort
OVERVIEW

프로젝트 소개

개인 과제에서는 pthread, mutex와 condition variable, barrier·semaphore, 병렬 정렬을 다뤘습니다. 공유 상태에 여러 실행 흐름이 접근할 때 필요한 동기화와 작업 분배를 구현했습니다.

팀 프로젝트에서는 lock-free linked list를 맡았고, 팀원은 skip list를 담당했습니다. 삽입·삭제·검색과 스트레스 테스트를 다루며 논리적인 삭제와 실제 메모리 해제가 서로 다른 문제라는 점을 확인했습니다.

MY CONTRIBUTION

담당한 구현

01

스레드 사이의 실행 순서 조율

mutex·condition variable을 이용한 barrier와 semaphore, 병렬 Game of Life 과제를 구현했습니다. 한 단계의 결과가 준비된 후 다음 단계로 진행하는 동기화 조건을 다뤘습니다.

02

여러 작업자가 나눠 처리하는 정렬

병렬 quicksort에서 작업 구간을 task stack으로 관리하고 여러 worker가 구간을 가져가 처리하는 구조를 구현했습니다. 작은 구간은 별도의 정렬 처리로 연결했습니다.

03

CAS와 marked pointer 연결 리스트

std::atomic 포인터와 compare-exchange를 사용해 삽입과 삭제를 구현했습니다. 포인터의 표시 비트로 논리 삭제를 표현하고 리스트 연결에서 제거하는 흐름, 검색과 유효성 검사 및 스트레스 테스트를 담당했습니다.

DELIVERED WORK

구현 결과

  • pthread · Mutex/Condition Variable · Barrier/Semaphore
  • Worker와 task stack 기반 병렬 quicksort
  • 팀 프로젝트의 lock-free linked list·스트레스 테스트

학습용 동시성 구현입니다. 연결 해제 직후 메모리를 삭제하는 부분은 안전한 메모리 회수 방식으로 보완해야 합니다. 팀 프로젝트의 skip list는 팀원이 담당했습니다.

다음 프로젝트Geometry & Spatial Partition