윈도우 API중에 Interlocked 계열 API들은 멀티스레드 프로그래밍을 할 때 유용하게 쓰인다. 여러 종류의 함수들이 있지만 대부분은 primitive type의 데이터의 값을 증가, 감소, 비교 변경하는 기능을 제공하지만 조금 특이하게 자료구조를 다루는 함수들이 있다.

Interlocked Singly Linked List라는 이름의 이 자료구조는 윈도우에서 기본으로 제공되는, 멀티 스레드의 접근에 대해 단일 액세스를 보장해주는 stack이다. 이름만 봐서는 FIFO로 동작할 것 같지만 실제 동작은 Push/Pop이 같은 곳에서 일어나는 FILO 방식이니 주의해야 한다.

이 스레드 세이프한 스택은 일반적으로 널리 쓰이는 다른 Interlocked 계열 함수들과 연관 지어 알아두는 것보다는 연결 리스트를 다루는 함수들과 연관 짓는 것이 더 맞을지도 모른다. 윈도우는 Singly Linked List와 Doubly Linked List를 기본 지원하는데, 이 중에서 단일 스레드 접근을 보장해주는 단일 연결 리스트 기능이 Interlocked Singly Linked List이다. 기본 연결리스트 기능들은 윈도우 2000부터 지원했고, Interlocked 방식은 윈도우 XP와 Server 2003 버전 이상부터 지원된다. (http://msdn.microsoft.com/en-us/library/ff563802.aspx )

API들의 소개와 샘플 코드를 정리하려고 했는데, 검색해보니 자료가 참 많다. 그리고 이미 매우 잘 정리된 포스팅 들이 많아 무의미 할 것 같다. 구글링한 링크나 몇 개 정리해본다.

그나저나 이런 윈도우 관련 디테일한 지식들을 잘 정리해 놓은 책은 없는지 한 번 살펴봐야겠다. 그냥 작업하다 듣게 되거나 보게 되어서 알게 되는 것 말고 한 방에 싹 공부해두면 좋겠는데. 책을 사두면 레퍼런스로 쓰기도 좋잖아. 혹시 이 글 보이는 분 중에 추천해 주실 책이 있으면 지체 없이 추천 바랍니다 :)

 

Posted by leafbird 트랙백 1 : 댓글 1

댓글을 달아 주세요

  1. addr | edit/del | reply Favicon of https://devnote.tistory.com BlogIcon leafbird 2012.01.27 18:24 신고

    Windows Via C/C++ 책 스터디중.
    윈도우 API에 대한 디테일한 설명이 비교적 잘 나와있는 편이지만
    해당 포스팅에서 다루고 있는 Interlocked Singly Linked List에 대해서는 자세히 나와 있지는 않다.
    딱 네 줄 나옴(293p). API 소개하는 책이니 만큼 ABA 문제 등에 대한 설명은 없다.