NSLock을 알아보자

멀티스레드를 활용할 경우가 많아지면서 자연스럽게 동기화 문제가 따라오게 되었습니다. 이 문제를 해결하기 위한 기본적인 방법은 중요한 지점(Critical Section)에 접근을 통제하는 것입니다. 이를 위한 방법론으로 lock, semaphore 등이 있는데 오늘은 Foundation에서 기본적으로 제공하는 NSLock과 관련 클래스들을 살펴보도록 하겠습니다. [Read More]

1급 객체(first-class object)란?

일급 객체라는 말이 요새는 많이 보편화가 된 것 같습니다. 제가 이 말을 처음 들었던 건 자바스크립트에서였는데, 단순히 자바스크립트에 국한된 개념은 아니더군요. 프로그래밍 언어론 수업시간에도 그렇게 강조되지는 않았던 것 같은데 이제는 대부분의 언어가 이 일급 객체 개념을 가지고 가고 있습니다. 오늘은 이 일급 객체에 대해서 알아보도록 하겠습니다. [Read More]

문자열 검색(1)-KMP알고리즘

문자열 검색이란, 전체 문자열(짚더미(HayStack)에 비유합니다)에서 원하는 문자열(바늘(Niddle)에 비유합니다)의 위치를 모두 찾는 알고리즘입니다. 문자열의 위치는 전체 문자열에서의 시작 인덱스로 나타냅니다. 가장 간단한 구현방법과, 이를 개선한 KMP 알고리즘을 알아보도록 하겠습니다. [Read More]

연산자의 본체, Sink

이번 포스트에서는 Producer에서 등장했던 Sink에 대해서 알아보도록 하겠습니다. Sink라는 이름은 ‘이벤트 스트림(stream)이 흘러 들어가는 곳’이라는 의미로 추정이 됩니다. 연산자 정의는 내부에 각자 Sink 클래스를 상속받아서 구현하고 있습니다. Sink 클래스를 살펴보겠습니다.(디버깅 관련 코드는 모두 생략했습니다.) [Read More]