빌더(TWx) 님이 쓰신 글 :
: 한시운 님이 쓰신 글 :
: :
: : Graphics::TBitmap *bmp=NULL;
: :
: : bmp=new Graphics::TBitmap;
: : bmp->Width=Panel->ClientWidth;
: : bmp->Height=Panel->ClientHeight;
: : bmp->Canvas->Brush = Panel->Brush;
: : bmp->Canvas->FillRect(Panel->ClientRect);
: : bmp->Canvas->Lock();
: :
: :
: : 대략 이런식으로 생성할때 쓰는것 같은대 bmp->Canvas->Lock(); 이게 의미가 뭔지 왜 있어야 하는건지를 모르겠내요
: :
:
:
: 답변:
:
:
: 여러 쓰레드에서 동시에 Canvas 개체를 액세스할 때 동기화 하기 위한 목적으로 사용하는 거고
: 쓰레드가 관여되지 않으면 사용할 필요 없습니다.
:
: 그리고...
: 멀티 쓰레드로 액세스할 때.. 굳이 Canvas의 Lock()을 사용해야 하는 것은 아니고
: 일반적인 크리티칼섹션 API 써도 됩니다.
:
:
: 코드 사용 패턴은....
:
: void foo()
: {
: Canvas->Lock();
: .....
: 캔버스 액세스 호출들...
: .....
: Canvas->Unlock();
: }
:
: 형태가 되어야 하고요.
:
답변 :
그렇군요 크리티칼 섹션을 쓰는게 익숙하진 않지만 일단 편리하고 짧게 쓸수 있으니 애용해야겠내요 ㅇㅅㅇ
뭐 코드 자체는 안정적이겠죠뭐 하하하;
|