C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[476] TZSynchronize 클래스입니다. CriticalSection 으로 쓰레드 동기화시 사용하세요 ^^
황경록 [mpbox] 6697 읽음    2005-07-06 09:55
상속 받으시고 다음과 같이 사용하시면 됩니다.

Lock();

try
{
    ... 수행할 동기화 코드
}
__finally
{
    Unlock();
}

----- 헤더 입니다. -----

#ifndef unitZSynchronizeH
#define unitZSynchronizeH

#include <Classes.hpp>

class TZSynchronize
{
public:
    TZSynchronize();
    virtual ~TZSynchronize();

protected:
    _RTL_CRITICAL_SECTION FLock;

public:
    void Lock() { EnterCriticalSection(&FLock); }
    void Unlock() { LeaveCriticalSection(&FLock); }

    int getLockCount() { return FLock.LockCount; }
};

#endif

----- 소스 입니다. -----


#pragma hdrstop

////

#include "unitZSynchronize.h"

#pragma package(smart_init)

TZSynchronize::TZSynchronize(void)
{
    InitializeCriticalSection(&FLock);
}

TZSynchronize::~TZSynchronize(void)
{
    while( FLock.LockCount != -1 )
    {
        Sleep(0);
    }

    Lock();

    try
    {
    }
    __finally
    {
        Unlock();

        DeleteCriticalSection(&FLock);
    }
}

+ -

관련 글 리스트
476 TZSynchronize 클래스입니다. CriticalSection 으로 쓰레드 동기화시 사용하세요 ^^ 황경록 6697 2005/07/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.