C++11: scoped_lock + “짜증나는 파싱”

boost::thread 에는 scoped_lock 이라는 블럭 스코프 동안 유효한 락이 있다. 멀티스레드 프로그래밍 하는 사람들은 유용하게 쓰고 있으리라 생각한다. 이 클래스를 엉터리로 쓰고 있는 다음 코드를 보자. main 에서 미리 mutex 에 락을 걸고 들어가기 때문에, scoped_lock 이 락을 걸지 못해서 데드락에 빠질 것처럼 보인다. #include <iostream> #include <boost/thread/mutex.hpp> struct foo { boost::mutex mutex_; void Run() […]

C++14: lambda 함수의 캡처 목록

C++11 lambda 함수에 값을 전달하는 방법은 복사/참조 두 가지 뿐이라서 expression 을 전달하진 못한다. lambda를 아주 거칠게 묘사하면 특정 인자를 받는 functor struct를 자동으로 생성하고 이거의 타입 추론을 자동으로 해주는 정도다. 그러니 생성자에 해당하는 lambda 캡처 목록에 “생성자에 해당하는게 있는데 왜 expression은 생성자에 못 넘기고, 변수 혹은 변수의 참조만 넘길까” 라고 생각하는건 매우 타당한 의문인 […]