Windows46 쓰레드(Thread) 동기화 개념 쓰레드 동기화 : 쓰레드 간의 질서가 잘 지켜지고 있음을 의미 쓰레드 동기화의 방법 : 유저 모드 동기화 : 동기화가 진행되는 과정에서 커널 코드가 실행되지 않는다. 커널 모드로의 전환이 이뤄지지 않으므로 성능상에 이점이 있지만 기능상의 제한도 있다. 커널 모드 동기화 : 커널에서 제공하는 동기화 기능을 활용한다.(유저 모드에서 제공하지 못하는 기능을 제공받을 수 있다) 커널 모드로의 전환으로 인해 성능이 저하된다. 두가지 관점에서의 쓰레드 동기화 : 메모리 접근에 대한 동기화 : 쓰레드들의 임계 영역 동시접근을 막아 동기화한다. (참고 : 임계 영역(Critical Section) : 배타적 접근(한 순간에 하나의 쓰레드만 접근)이 요구되는 공유 리소스(전역변수와 같은)에 접근하는 코드 블록) (예 :.. 2010. 3. 4. 쓰레드(Thread) 실행순서 동기화 이벤트(Event) 기반 동기화 : 개념 : 생산자는 문자열을 생성한다(입력받는다), 소비자는 문자열을 소비한다(출력한다) 생산자가 문자열을 생성하고 나면, 이 상태를 감지한 소비자가 문자열을 가져가 소비한다. 이벤트 커널 오브젝트의 특성 : 1. 이벤트 커널 오브젝트는 파라미터에 의해 Signaled or Non-Signaled 상태로 생성된다. 2. 프로그래머의 요청에 의해 Signaled 상태가 된다. 3. 자동 리셋 모드 일시 WaitForSingleObject 함수 호출로 Signaled -> Non-Signaled 상태로 변경된다. 수동 리셋 모드 일시 추가로 ResetEvent 함수를 사용한다. 사용법 : HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEven.. 2010. 3. 4. 쓰레드(Thread) 메모리 접근 동기화 1. 크리티컬 섹션 기반의 동기화(유저 모드) : 개념 : 열쇠(Critical Section)를 생성한다. 쓰레드가 임계 영역에 접근하기 위해서는 열쇠를 얻어야 한다. 열쇠를 얻어 임계 영역에 접근한 쓰레드는 일을 마친후 다음 쓰레드를 위해 열쇠를 반환한다. 사용법 : CRITICAL_SECTION gCriticalSection; // 열쇠를 생성한다 // 크리티컬 섹션 오브젝트 선언후에는 반드시 초기화 해야한다. void InitializeCriticalSection( // 크리티컬 섹션 오브젝트 초기화 함수 LPCRITICAL_SECTION lpCriticalSection // 초기화 하려는 크리티컬 섹션 오브젝트의 주소값 ); void EnterCriticalSection( LPCRITICAL_S.. 2010. 3. 4. 쓰레드(Thread)의 생성과 소멸 쓰레드 생성 : HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 보안속성(TRUE : 상속, NULL : 상속제외) SIZE_T dwStackSize, // 쓰레드의 스택 크기 LPTHREAD_START_ROUTINE lpStartAddress, // 쓰레드로 동작하기 위한 함수(쓰레드 main) // 리턴타입 DWORD, 매개변수 타입 LPVOID(void*) LPVOID lpParameter, // 쓰레드 함수에 전달할 인자 지정 DWORD dwCreationFlags, // 쓰레드 생성 및 실행을 조절 LPDWORD lpThreadId // 쓰레드 ID를 전달받기 위한 변수의 주소값 ); 쓰레드 소멸 : 1. return(일반적,.. 2010. 2. 28. 쓰레드(Thread) 쓰레드(Thread) : 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델 1. 독립적인 스택(Stack)을 가진다. 2. 코드 영역을 공유한다. (위와 같이 쓰레드 main 함수는 코드 영역에 존재하는 모든 함수를 호출할 수 있다) 3. 데이터 영역과 힙을 공유한다.(전역변수와 동적 할당된 메모리 공간 공유 가능) 4. 프로세스 핸들 테이블 공유 프로세스 핸들 테이블에 대한 핸들 정보는 프로세스 내의 쓰레드 들에게 공유되어 각 쓰레드가 그 핸들에 대해 접근이 가능하다 (참고 : 같은 프로세스내의 쓰레드들은 스택 이외의 모든 것을 공유한다) 프로세스와 쓰레드 Windows 에서 프로세스는 단순히 쓰레드를 담는 상자다. 실제 프로그램 흐름을 형성하는 것은 쓰레드이다. 따라서 스케줄러(Windo.. 2010. 2. 28. 환경변수 환경변수 : 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값. 프로세스별로 별도의 메모리 공간에 저장하고 관리하는 데이터. (key = value 의 형태) 윈도우즈의 환경변수 1. 기본 제공 시스템 변수 2. HKEY_LOCAL_MACHINE 하이브에 있는 시스템 변수 3. HKEY_CURRENT_USER 하이브에 있는 로컬 변수 4. 모든 환경 변수 및 Autoexec.bat 파일에서 설정된 경로 5. 모든 환경 변수 및 로그온 스크립트에서 설정된 경로 6. 스크립트 또는 배치 파일과 상호 작용하는 변수 함수를 통한 환경변수 : 환경변수 등록 : BOOL SetEnvironmentVariable( LPCTSTR lpName, // key 에 해당하는 값 LPCTSTR lpValue // value.. 2010. 2. 25. 이전 1 2 3 4 5 6 ··· 8 다음