Last active
November 2, 2023 01:59
-
-
Save gunkim/54a9a72398d6fef6cec41040128a0521 to your computer and use it in GitHub Desktop.
pthread 실시간 CPU 스케줄링 예제 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <pthread.h> // POSIX 스레드 사용을 위한 헤더 파일 | |
#include <stdio.h> // 입출력 관련 헤더 파일 | |
#define NUM_THREADS 5 // 생성할 스레드의 개수를 정의 | |
// 스레드가 실행할 함수 | |
void *runner(void *param) { | |
// 스레드 종료 | |
pthread_exit(0); | |
} | |
int main(int argc, char *argv[]) { | |
int i, policy; | |
pthread_t tid[NUM_THREADS]; // 스레드 ID를 저장할 배열 | |
pthread_attr_t attr; // 스레드 속성 | |
// 스레드 속성 초기화 | |
pthread_attr_init(&attr); | |
// 현재 스케줄링 정책 조회 | |
if (pthread_attr_getschedpolicy(&attr, &policy) != 0) { | |
fprintf(stderr, "Unable to get policy.\n"); // 오류 메시지 출력 | |
} else { | |
// 스케줄링 정책에 따른 메시지 출력 | |
if (policy == SCHED_OTHER) { | |
printf("SCHED_OTHER\n"); | |
} else if (policy == SCHED_RR) { | |
printf("SCHED_RR\n"); | |
} else if (policy == SCHED_FIFO) { | |
printf("SCHED_FIFO\n"); | |
} | |
} | |
// 스케줄링 정책을 FIFO로 설정 | |
if (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) != 0) { | |
fprintf(stderr, "Unable to set policy.\n"); // 오류 메시지 출력 | |
} | |
// NUM_THREADS 만큼 스레드 생성 | |
for (i = 0; i < NUM_THREADS; i++) { | |
pthread_create(&tid[i], &attr, runner, NULL); | |
} | |
// 모든 스레드가 종료될 때까지 대기 | |
for (i = 0; i < NUM_THREADS; i++) { | |
pthread_join(tid[i], NULL); | |
} | |
return 0; // 프로그램 종료 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment