그전까지 synchronized block구현을

#define __SAUTOLOCK_SCORPED(cs) cs.Lock(); for( int __synchronized_count = 0; __synchronized_count < 1; __synchronized_count++, cs.Unlock() )

이런식으로 사용하고 있었다.

안에서 break를 걸면 문제가 생기지만 그렇게 쓸일은 없고-ㅅ-;
익셉션 처리는 안하므로 별상관없고...라고 생각하고 있었는데
for문 안에서 사용하는 경우에 for문을 종료할려고 break를 한다던가 continue를 해보리면 먹어버린다는 엄청난 버그가-_-;
게다가 요새는 VERIFY_RETURN식으로 쓰는게 많아서 불안한 부분도 꽤 있다.

이에 대해 gpg에 여러 글들이 올라오는 와중에 획기적인 해결방법이 나왔다.

synchronized block in C++
http://ricanet.com/new/view.php?id=blog/050807

improved synchronized block in C++
http://ricanet.com/new/view.php?id=blog/050811a

코드도 상당히 깔끔하며 여러가지 문제점을 쉽게 해결을 해주는 솔루션이다...
역시 세상은 넓다

+ Recent posts