제목 어그로를 좀 끌어봤는데, 이만큼 직관적이면서 어그로 없는 제목이 안 떠오르는 걸 어쩌겠는가. 그리고 인터넷에서 보이는 거의 대부분 글에서 placement new가 잘못 쓰이고 있기도 하고.
지난 글에서 만든 Semi-Lockfree Object Pool을 이용해 Lockfree Queue를 구현하다 버그가 좀 나와서, 디버깅한 방법론을 정리해본다.
공개된 Lockfree Object Pool 구현체는 많이 있다. 그런데 다들 예약된 Object가 다 떨어지면, Object를 1개만 추가로 동적 할당해 기존 linked list에 붙이는 식으로 구현한다. (예: boost freelist)
프로그래밍을 함에 있어, 오류 처리는 피할 수 없는 숙명이다. 이를 위해 C++에서는 보통 아래 3가지 메커니즘을 사용하게 된다.
C++에서 템플릿 관련 컴파일 에러는 읽기 힘들기로 악명이 높다. (1줄만 고치면 되는 문제인데 오류 메시지가 1000줄이 되는 바람에 터미널에서 잘려서 오류 메시지를 읽지 못하는 경험도 해봤다… -_-)