[condition variable를 이용한 producer-con] condition variable를 이용한 producer-consumer 프로그램
- 최초 등록일
- 2004.06.19
- 최종 저작일
- 2004.06
- 6페이지/ 한컴오피스
- 가격 1,000원
목차
소스 작성 / 주석.
프로그램 실행 결과를 캡쳐한 결과물.
프로그램 실행 결과를 리다이렉트명령을 이용하여 파일로 저장한 결과파일.
프로그램 설명
라이브러리 중심으로 한 동작원리
3가지 프로그램의 장단점 분석.
결론/느낀점
본문내용
프로그램 설명
함수 설명
메인 함수 : 2개의 thread를 선언/생성/job을 할당해주면 이들 thread가 종료될때까지 main의 프로그램 종료를 기다린다.
producer함수 : for문을 이용하여 11번 실행하도록 하였으며, 우선 임의초(s)만큼 sleep한후 버퍼에 데이터를 저장한다.
consumer함수 : for문을 이용하여 11번 실행하도록 하였으며, 우선 임의초(s)만큼 sleep한후 버퍼로 부터 데이터를 불러온다.
프로그램이 실행되면 두 thread가 실행되며 producer thread가 먼저 mutex영역으로 들어가면 (consumer가 먼저 mutex로 들어가면 pthread_cond_wait(&buff_space,&mutex_lock)으로 인해 mutex를 풀고 buff_space신호를 기다리면서 블럭된다.) consumer는 pthread_mutex_lock (& mutex_lock) 부분에서 블록 되어 unlock되기를 기다린다. 임계영역 처리후 임계역역을 unlock시키며 (이순간도 consumer는 wait명령에 의해서 블럭된 상태임) pthread_cond_signal(&buff_space)를 실행하여 buff_space를 기다리며 블럭된 consumer를 깨워준다. 동시에 임계영역으로 들어간다. producer는 sleep(s)후 임계영역으로 진입하려 하나 consumer가 lock시킨 상태이므로 producer은 블럭된다.
참고 자료
- 프로그래머를 위한 JAVA2(Second Edition)
- UNIX Systems Programming(David A. Curry)
- 응용 운영 체제 개념(Silberschats, Galvin, Gagne)
- 교수님이 제공해주신 자료(pthread)
- http://www.javanuri.com
- http://www.joinc.co.kr
- http://www.serpentine.com/~bos/threads-faq/
- http://www.bell-labs.com/topic/books/os-book/slide-dir/index.html
- http://www.ezdoum.com/upload/thread/pthread.pdf
- http://www.math.arizona.edu/swig/pthreads/threads.html
- http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html
- http://kldp.org/KoreanDoc/Thread_Programming-KLDP
- http://www.joinc.co.kr/modules.php?name=Search&query=thread