스레드 사이의 실행 순서 조율
mutex·condition variable을 이용한 barrier와 semaphore, 병렬 Game of Life 과제를 구현했습니다. 한 단계의 결과가 준비된 후 다음 단계로 진행하는 동기화 조건을 다뤘습니다.
스레드 동기화, 병렬 작업 분배와 CAS 기반 연결 리스트를 구현하며 동시성의 조건과 한계를 살펴본 프로젝트입니다.
개인 과제에서는 pthread, mutex와 condition variable, barrier·semaphore, 병렬 정렬을 다뤘습니다. 공유 상태에 여러 실행 흐름이 접근할 때 필요한 동기화와 작업 분배를 구현했습니다.
팀 프로젝트에서는 lock-free linked list를 맡았고, 팀원은 skip list를 담당했습니다. 삽입·삭제·검색과 스트레스 테스트를 다루며 논리적인 삭제와 실제 메모리 해제가 서로 다른 문제라는 점을 확인했습니다.
mutex·condition variable을 이용한 barrier와 semaphore, 병렬 Game of Life 과제를 구현했습니다. 한 단계의 결과가 준비된 후 다음 단계로 진행하는 동기화 조건을 다뤘습니다.
병렬 quicksort에서 작업 구간을 task stack으로 관리하고 여러 worker가 구간을 가져가 처리하는 구조를 구현했습니다. 작은 구간은 별도의 정렬 처리로 연결했습니다.
std::atomic 포인터와 compare-exchange를 사용해 삽입과 삭제를 구현했습니다. 포인터의 표시 비트로 논리 삭제를 표현하고 리스트 연결에서 제거하는 흐름, 검색과 유효성 검사 및 스트레스 테스트를 담당했습니다.
학습용 동시성 구현입니다. 연결 해제 직후 메모리를 삭제하는 부분은 안전한 메모리 회수 방식으로 보완해야 합니다. 팀 프로젝트의 skip list는 팀원이 담당했습니다.