한 참 자고 있는데, 갑자기 세미나 해달라는 전화 때문에 잠에서 깼습니다 ㅡ.ㅡ;;

중단했던 코딩을 다시 하려니 손에 안잡혀서 이리 저리 노니다가,

예전에 쓰레드에 대한 강의했을 때 설명했던 클래스 TMultiReadExclusiveWriteSynchronizer 가 생각나서요.

제가 써본 기본 클래스로는 제일 긴 이름을 가지고 있는 이넘은 모르는 분들도 좀 있는 거 같아서요.

쓰레드의 동기화에서는 TCriticalSection 을 자주 쓸텐데요.

TCriticalSection 대신 사용할 수 있는 것이, TMultiReadExclusiveWriteSynchronizer 입니다.

일단 다른 점은,

    procedure BeginRead;
    procedure EndRead;
    function BeginWrite: Boolean;
    procedure EndWrite;

와 같이 읽기용 Lock과 쓰기용 Lock이 따로 존재한다는 점입니다.

    procedure BeginRead;
    procedure EndRead;

처럼 읽기용 Lock은 잠겨져있는 경우에도, 다른 쓰레드에서 BeginRead로 잠금을 하면,

블로킹 되지 않고 바로 코드가 실행된다는 점입니다.

특정한 자원을 공유할 때, 읽기는 여러 쓰레드에서 동시에 진행해도 상관없기 때문에 허용하는 것입니다.

따라서, TCriticalSection 보다는 다소 효율적인 관리가 가능할 수 있습니다.

그냥 자다 일어나서 별 쓸모 없는 팁이었습니다 ^^;