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

C++빌더 Q&A
C++Builder Programming Q&A
[61905] Re:Re:Re:Re:Re:Re:이상하네요...
질문 [] 943 읽음    2010-07-14 23:52
제가 궁금해하는 환경은 세마포어에서 스레드 개수를 1개 이상 즉 2개든 3개든 암튼 1개 이상으로 설정했을 경우
이구요...

지금 제가 혼동 스러워하는 부분은

뮤텍스, 크리티컬 섹션은 오직 한개의 쓰레드만 접근 가능하게 하는 구조라는 것은 오직 1개의 스레드만
임계영역에 접근 할 수 있다는 말씀 이신거죠??
제가 A, B라는 스레드를 만들었다고 가정했을 때 A라는 스레드가 임계영역에 접근을 했으면 B스레드는  A스레드의
작업이 완료될때까지 대기헀다가 A스레드의 작업이 끝나면 B스레드가 임계영역에 접근하는 그런 구조 아닌가요??
아래는 제가 뮤텍스 예제 만들어 본건데요..이런 형태로 사용하는거 아닌가요???

HANDLE createMutex = CreateMutex(NULL, FALSE, NULL);
void Func() { 
     WaitForSingleObject(createMutex , INFINITE);
     std::cout << "실행 중" << std::endl;
     ReleaseMutex(createMutex );
}

DWORD WINAPI Thread1(void *params)
{
       Func();      
       return 1;
}

DWORD WINAPI Thread2(void *params)
{
       Func();      
       return 1;
}

int main()
{
    HANDLE threads[2];
    hreads[0] = CreateThread(0, 0, Thread1, 0, 0, 0);
    threads[1] = CreateThread(0, 0, Thread2, 0, 0, 0);

    WaitForMultipleObjects(2, threads, TRUE, INFINITE);

    CloseHandle(threads[0]);
    CloseHandle(threads[1]);
    CloseHandle(createMutex );

    return 0;
}

그리고
세마포어는 동시 접근 할 수있는 쓰레스 개수를 지정할 수 있는 개념이라는 말씀은 세마포어로 설정할 떄 동시 접근
할수 있는 스레드의 개수를 3으로 설정했을 경우 3개의 스레드가 동시에 임계영역에 접근할 수 있다는 말씀 아닌가요?
위의 예제에서 Func()함수에 Thread1이 먼저 접근하고 작업이 종료되면 Thread2가 접근할 수 있는데 세마포어는
Thread1, Thread2 스레드가 동시에 Func()에 접근 가능한 개념 아닌가요???

+ -

관련 글 리스트
61890 동기화 관련으로 조언부탁드립니다.. 질문 991 2010/07/14
61896     Re:동기화 관련으로 조언부탁드립니다.. 크레브 1083 2010/07/14
61898         Re:Re:이상하네요... 질문 899 2010/07/14
61899             Re:Re:Re:이상하네요... Lyn 855 2010/07/14
61900                 Re:Re:Re:Re:이상하네요... 질문 859 2010/07/14
61902                     Re:Re:Re:Re:Re:이상하네요... Lyn 903 2010/07/14
61901                     Re:Re:Re:Re:Re:이상하네요... 크레브 886 2010/07/14
61905                         Re:Re:Re:Re:Re:Re:이상하네요... 질문 943 2010/07/14
61906                             Re:Re:Re:Re:Re:Re:Re:이상하네요... 크레브 1066 2010/07/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.