UNIX System Programming by Yang-Sae Moon
Page 1
Homework #13 (1/2)
프로그램을 작성하고 , 프로그램과 실행 결과를 프린트하여 제출한다 .
1. 강의노트 17 의 Simple Example 1 을 수정하여 다음 기능을 하도록 프로그래밍 하시오 .
메인 스레드는 숫자 ( 정수 ) 하나를 입력 받고 , 두 개의 스레드를 생성하되 , 해당 숫자를 전달한다 .
첫 번째 스레드는 1 부터 해당 숫자까지의 합을 구하고 , 두 번째 스레드는 1 부터 해당 숫자까지의 곱을 구한다 .
메인 스레드는 각 스레드에서 구한 합과 곱을 각각 출력한다 .
2. 강의노트 17 의 Simple Example 2 을 수정하여 다음 기능을 하도록 프로그래밍 하시오 .
메인 스레드는 먼저 별표 ('*') 를 40 개 출력한다 .
메인 스레드는 10 개의 스레드를 생성하되 , 스레드 번호를 각 스레드에 전달한다 .
각 스레드는 ( 스레드 번호 + 1)*3 개의 샾 ('#') 을 출력한다 .
(예를 들어 , 스레드 번호가 3 이면 (3+1)*3 = 12 개의 샾을 출력한다 .)
열 개 스레드의 작업이 모두 끝나면 메인 스레드는 별표를 다시 40 개 출력한다 .
UNIX System Programming by Yang-Sae Moon
Page 2
Homework #13 (2/2)
3. 강의노트 17 의 More Example 1 을 수정하여 다음 기능을 하도록 프로그래밍 하시오 .
메인 스레드는 총 5 개의 서로 다른 스트링 ( 메시지 ) 를 구성하고 , 5 개의 스레드를 생성하되 , 각 스 레드에 5 개의 스트링 모두를 전달한다 .
각 스레드는 0 번 스트링부터 스레드 번호까지의 스트링을 차례로 출력한다 .
(예를 들어 , 스레드 번호가 2 이면 스트링 3 개 (0 번 , 1 번 , 2 번 ) 을 출력하고 , 스레드 번호가 4 이면 스트링 5 개를 모두 출력한다 . 스레드 번호를 함께 출력하여 어느 스레드가 출력했는지 알 수 있도록 한다 .)
4. 강의노트 17 의 More Example 2 를 수정하여 다음 기능을 하도록 프로그래밍 하시오 .
메인 스레드는 숫자 ( 정수 ) 하나를 입력 받고 , 총 4 개의 스레드를 생성하되 입력 받은 숫자를 전달 한다 .
각 스레드는 삼각함수 , 로그함수 , 지수함수 중에서 하나를 주어진 숫자만큼 반복하여 수행하고 그 합을 전역변수에 기록한다 . ( 함수의 파라미터 값은 스스로 결정한다 .)
주의할 점으로는 (1) 각 스레드가 사용하는 함수는 서로 다른 것을 사용해야 하며 , (2) 반복 횟수는 500000회 이상으로 해야 한다 .
메인 스레드는 자식 스레드가 기록 ( 저장 ) 한 결과 값을 스레드 번호와 함께 출력한다 .