|
네~
CriticalSection은 주로 공유자원에 대한 동시접근을 막기위해서 사용합니다.
초보자 님이 쓰신 글 :
: 아래같이 CriticalSection 1개만 선언하고 각기 다른 처리를 할수있나요?
: 스레드를 꼭 써야 할 상황이거든요. (속도가 믾이 필요한 일입니다.)
:
: 가능하다면 아래처럼 사용시 데드락에 걸릴수 있나요?
: 아시는분 부탁드립니다.
:
:
: CRITICAL_SECTION CriticalSection;
: InitializeCriticalSection(&CriticalSection); // FormCreate 함수에서
:
: // 1번째 스레드 처리
: __fastcall TThread1::TThread1(int nNum)
: : TThread(true)
: {
: FreeOnTerminate = true;
: Resume();}
: /---------------------------------------------------------------------------
: void __fastcall TThread1::Execute()
: {
: while(!Terminated)
: {
: EnterCriticalSection(&CriticalSection);
:
: Sleep(10);
: 처리1;
:
: LeaveCriticalSection(&CriticalSection);
: }
: }
: }
: }
: //---------------------------------------------------------------------------
:
: // 2번째 스레드
: __fastcall TThread2::TThread2(int nNum)
: : TThread(true)
: {
: FreeOnTerminate = true;
: Resume();}
: //---------------------------------------------------------------------------
:
: void __fastcall TThread2::Execute()
: {
: while(!Terminated)
: {
: EnterCriticalSection(&CriticalSection);
:
: Sleep(10);
: 처리2;
:
: LeaveCriticalSection(&CriticalSection);
: }
: }
: }
: }
: //---------------------------------------------------------------------------
|