쓰레드의 동기화를 Pthread의 semaphore와 condition variable, java의 동기화를 이용해서 구현
- 최초 등록일
- 2006.11.24
- 최종 저작일
- 2006.05
- 13페이지/ 한컴오피스
- 가격 2,000원
소개글
쓰레드의 동기화를 Pthread의 semaphore와 condition variable, java의 동기화를 이용해서 구현한 레포트
목차
<Semaphore 동기화>
< 라이브러리 사용 방법과 프로그램 구성>
<Semaphore 동기화 소스코드>
<실행결과>
<Condition Variable 동기화>
< 라이브러리 사용 방법과 프로그램 구성>
<Condition Variable 동기화 소스코드>
<실행결과>
<Java 동기화>
< 라이브러리 사용 방법과 프로그램 구성>
<자바 동기화 소스코드>
<실행결과>
<논의>
본문내용
< 라이브러리 사용 방법과 프로그램 구성>
semaphore를 사용하기 위해선 semaphore.h 파일을 인클루드 시켜야함.
semaphore 변수는 sem_t 문으로 선언함, full 변수는 데이터가 채워진 갯수, empty 변수는 데이터가 빈자리 개수, mutex 변수는 뮤추얼 익스쿨루션임.
initbuf(struct buffer *p) 함수를 호출해서 버퍼 변수와 세마포 변수들을 초기화함
putmsg() 함수에서 sem_wait(&empty) 함수가 empty 변수가 0인지 체크를 하고 0이면 버퍼가 가득 차 있다는 것을 인식하고 버퍼가 빈자리가 생길 때까지 기다린다. sem_wait(&mutex) 함수는 mutex 가 0인지를 체크하고 0이면 사용가능한 상태가 될 때까지 기다린다. getmsg() 함수에서 sem_post(&mutex) 함수를 사용해서 mutex가 해제되었다는 것을 알려주고, sem_post(&empty) 함수를 사용해서 empty 변수가 0이 아님을 알려주면 그 때 putmsg()함수가 실행이 되고 버퍼에 값을 저장한다.
getmsg()함수에서 sem_wait(&full) 함수가 full 변수가 0인지 체크를 하고 0이면 버퍼가 비어 있다는 것을 인식하고 버퍼에 내용이 채워질 때까지 기다린다. sem_wait(&mutex) 함수는 mutex 가 0인지를 체크하고 0이면 사용가능한 상태가 될 때까지 기다린다. putmsg() 함수에서 sem_post(mutex) 함수를 사용해서 mutex가 해제되었다는 것을 알려주고, sem_post(&full) 함수를 사용해서 full 변수가 0이 아님을 알려주면 그 때 getmsg() 함수가 실행이 되고 버퍼에서 값을 제거한다.
참고 자료
없음